我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:彩66彩票 > 多态编程语言 >

C++ 引用和多态经典题求特别特别的细详解

归档日期:07-26       文本归类:多态编程语言      文章编辑:爱尚语录

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  b.foo(5.0)输出子类CB的结果这个应该没什么问题吧?子类对象输出子类的方法,父类对象输出父类的方法。这里的b是CB的对象,所以输出的是子类b的foo(doubled)方法。

  然后是a.foo(5.0),这里输出的结果是子类的foot(inti)而不是父类的foo(inti)是因为你这里声明部分CA&a=b;这是一个引用赋值,父类对象a通过子类对象b引用赋值,由于父类的

  foo(inti)是virtual虚方法,所以由子类对象b的方法foo(inti)来实现了。这就是c++的多态。

  这里的CA&a=b;这种引用方式赋值很难理解,在实际项目中强烈不推荐使用。本人才疏学浅,对于这行的理解也是问了我师傅才明白的。一般是追求那些个代码极致的人才搞的吧。

  这样让别的程序员一眼就能看出你的a只是一个空壳。。实际上还是b对象,而且这种CA&a=b;存在一个作用域的缺陷。

  这里c输出的是父类foo(inti)这就让c++的多态失效了。因为子类对象b在{}中释放了。这种情况在实际项目中应该是大家不希望看到的。

本文链接:http://chapmanswifts.com/duotaibianchengyuyan/845.html