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

在复制控制函数中,只有析构函数应定义为虚函数,构造函数不能定义为虚函数。构造函数是在对象完全构造之前运行的,在构造

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

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

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

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

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

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

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


摘在《C++primer》第三版 构造函数和赋值操作符不是虚函数    496页

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值