关于赋值,可以写成连锁形式: int x, y, z; x = y = z = 15; //赋值连锁形式 赋值采用右结合律,故上述赋值被解析为: x = (y = (z = 15)); 为了实现连锁赋值,赋值操作符必须返回一个reference引用指向操作符的左侧实参. 下面示例是为classes实现赋值操作符时应该遵循的协议: class Widget { public: ... Widget& operator=(const Widget& rhs) //返回类型是个reference…
当涉及到继承时,派生类的赋值运算符也必须处理它的基类成员的赋值!否则,当派生类对象向另一个派生类对象赋值时,只有派生类部分赋值了.看看下面: class base { public: ): x(initialvalue) {} private: int x; }; class derived: public base { public: derived(int initialvalue) : base(initialvalue), y(initialvalue) {} derived& oper…