您的位置:首页 > 其它

构造函数和赋值操作符不是虚函数

2012-09-07 10:14 232 查看
在复制控制函数中,只有析构函数应定义为虚函数,构造函数不能定义为虚函数。构造函数是在对象完全构造之前运行的,在构造

函数运行的时候,对象的动态类型还不完整。

虽然可以在基类中将成员函数operator=定义为虚函数,但这样做并不影响派生类中使用的赋值操作符。每个类有自己的赋值操作符,

派生类中的赋值操作符有一个与类本身类型相同的形参, 该类型必须不同于继承层次中任意其他类的赋值操作符的形参类型。

将赋值操作符设为虚函数可能会令人混淆,因为虚函数必须在基类和派生类中具有同样的形参。基类赋值操作符有一个形参是自身类

类型的引用,如果该操作符为虚函数,则每个类都将得到一个虚函数成员,该成员定义了一个基类对象的operator=。但是,对派生类而言,

这个操作符与赋值操作符是不同的。

ps:将类的赋值操作符设为虚函数很可能会令人混淆,而且不会有什么用处

摘在《C++primer》第三版 构造函数和赋值操作符不是虚函数    496页
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐