首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

赋值操作符设为虚函数有关问题

2013-09-09 
赋值操作符设为虚函数问题C++Primer P496 “将类的赋值操作符设为虚函数很可能会令人混淆,而且不会有什么好

赋值操作符设为虚函数问题
C++Primer P496 “将类的赋值操作符设为虚函数很可能会令人混淆,而且不会有什么好处。”
怎么理解这句话,将赋值操作符没有意义吗?
[解决办法]
将类的赋值操作符设为虚函数很可能会令人混淆,而且不会有什么好处。

看清楚了 是说将 operator= 设置为 virtual 的

设置为virtual 说明子类可以覆盖它
子类覆盖了 父类的 operator= 
子类要替父类执行 父类各成员函数的 赋值 拷贝? 这个应该是父类自己的职责吧??? 
确实像不到有什么好处~~~~~~  所以令人困惑 你干嘛要 virtual 它呢?
[解决办法]
比如吧,你有个类b,有个虚赋值函数
class 水果
{
  public:
   virtual 水果& operator=(const 水果& o);
};

那么你的子类里的赋值函数得和基类的一样吧
class 苹果:public 水果
{
  public:
   水果& operator=(const 水果& o);
};

当你实际赋值的时候……苹果=水果,苹果=橘子,苹果=鸭梨。。。。都是可以赋值的。那么苹果这个概念就被严重破坏了。。。面向对象所需要解决的不仅仅是代码的正确性,它更是一个思维方式。代码上行得通并不一定含义上也精准。

热点排行