码迷,mamicode.com
首页 > 其他好文 > 详细

operator= 复制操作符的意外

时间:2014-07-09 12:23:19      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:assignment operator

首先,看下面的代码的输出时什么:



上述代码做了最理所当然的事,就是将Derived的两个对象进行了交换。但是通过指针进行的赋值输出却不是预期的:

bubuko.com,布布扣


竟然调用的是Base的operator=,也就意味着我们把d2的Base部分赋值给了d1,而现在的d1就是“一般是自己的derived,一半是d2的Base”的怪物啦!!!


看来编译器没有理会我们的意图,对于这样的指针赋值都不能如愿,于是,我们需要的是动态类型,那么,我们可以将 “operator=虚化”。



bubuko.com,布布扣


但是通过指针复制通过了,但是一般的对象赋值却莫名其妙了。


于是乎,添加对象本身的赋值操作符也是很有必要的,像下面这样:


结果为:

bubuko.com,布布扣


OK 大功告成,但是这只是其中的一小步。对于多重继承的情况,上述的代码又会出现一些令人费解的答案:

[to be continued]


operator= 复制操作符的意外,布布扣,bubuko.com

operator= 复制操作符的意外

标签:assignment operator

原文地址:http://blog.csdn.net/xuqingict/article/details/37572523

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!