为何赋值操作符必须定义为类成员函数
为什么赋值操作符必须定义为类成员函数
下面是为什么赋值操作符必须定义为类成员函数,C++primer原话
大多数操作符可以定义为成员函数或非成员函数。当操作数为成员函数时,他的第一个操作数隐式绑定到this指针。有些操作符(包括赋值操作符)必须是定义自己的类的成员。因为赋值必须是类的成员,所以this绑定到指向左操作数的指针。因此,赋值操作符接受单个形参,且该形参是同一类类型的对象。右对象一般作为const 引用传递
看了这段话,我还是没搞明白
就比如这个因为所以我就看不懂了。。
因为赋值必须是类的成员,所以this绑定到指向左操作数的指针
------解决方案--------------------
1.当class中没有重载赋值操作符时,class本身会合成一个赋值操作符
倒过来看,class需要知道自己是否应该合成一个赋值操作符,所以要把赋值操作符定义为成员函数
2.类的成员函数都有一个隐含的形参,叫做this,它指向当前类对象
下面是为什么赋值操作符必须定义为类成员函数,C++primer原话
大多数操作符可以定义为成员函数或非成员函数。当操作数为成员函数时,他的第一个操作数隐式绑定到this指针。有些操作符(包括赋值操作符)必须是定义自己的类的成员。因为赋值必须是类的成员,所以this绑定到指向左操作数的指针。因此,赋值操作符接受单个形参,且该形参是同一类类型的对象。右对象一般作为const 引用传递
看了这段话,我还是没搞明白
就比如这个因为所以我就看不懂了。。
因为赋值必须是类的成员,所以this绑定到指向左操作数的指针
------解决方案--------------------
1.当class中没有重载赋值操作符时,class本身会合成一个赋值操作符
倒过来看,class需要知道自己是否应该合成一个赋值操作符,所以要把赋值操作符定义为成员函数
2.类的成员函数都有一个隐含的形参,叫做this,它指向当前类对象