zoukankan      html  css  js  c++  java
  • operator= 复制操作符的意外

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



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



    居然调用的是Base的operator=,也就意味着我们把d2的Base部分赋值给了d1。而如今的d1就是“通常是自己的derived,一半是d2的Base”的怪物啦!

    !!


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





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


    于是乎,加入对象本身的赋值操作符也是非常有必要的。像以下这样:


    结果为:



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

    [to be continued]


  • 相关阅读:
    面向对象程序设计作业1
    寒假作业4
    寒假作业3
    寒假作业2
    寒假学习计划
    三个生命中极可爱的人与难舍的往事
    Numpy and Pandas
    入门级神经网络之权重训练
    tensorboard入门
    1
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5180447.html
Copyright © 2011-2022 走看看