赋值操作符设为虚函数问题
C++Primer P496 “将类的赋值操作符设为虚函数很可能会令人混淆,而且不会有什么好处。”
怎么理解这句话,将赋值操作符没有意义吗?
[解决办法]
将类的赋值操作符设为虚函数很可能会令人混淆,而且不会有什么好处。
看清楚了 是说将 operator= 设置为 virtual 的
设置为virtual 说明子类可以覆盖它
子类覆盖了 父类的 operator=
子类要替父类执行 父类各成员函数的 赋值 拷贝? 这个应该是父类自己的职责吧???
确实像不到有什么好处~~~~~~ 所以令人困惑 你干嘛要 virtual 它呢?
[解决办法]
比如吧,你有个类b,有个虚赋值函数
class 水果
{
public:
virtual 水果& operator=(const 水果& o);
};
那么你的子类里的赋值函数得和基类的一样吧
class 苹果:public 水果
{
public:
水果& operator=(const 水果& o);
};
当你实际赋值的时候……苹果=水果,苹果=橘子,苹果=鸭梨。。。。都是可以赋值的。那么苹果这个概念就被严重破坏了。。。面向对象所需要解决的不仅仅是代码的正确性,它更是一个思维方式。代码上行得通并不一定含义上也精准。