首页 > 其他 > 详细

补充阅读程序-4

时间:2016-05-12 17:38:37      阅读:115      评论:0      收藏:0      [点我收藏+]
/*copyright(c)2016.烟台大学计算机学院
02. * All rights reserved,
03. * 文件名称:text.Cpp
04. * 作者:刘涛
05. * 完成日期:2016年5月9日
06. * 版本号:vc++6.0
07. */

#include<iostream>
using namespace std;
class A
{
public:
   int n;
};
class B:public A {};   // class B:virtual public A{};
class C:public A {};   // class C:virtual public A{};
class D:public B,public C
{
public:
    int getn() {return B::n;}
};
int main()
{
   D d;
   d.B::n=10;
   d.C::n=20;
   cout<<d.getn()<<endl;
   return 0;
}
运行结果:
<img src="http://img.blog.csdn.net/20160510143442706?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
分析:此题中,B,C都是A的派生类,所以在主函数调用的时候前面要加上类名::来区别,又因为D为B,C的派生类,所以return的时候return的是B::的n,所以是10.
<img src="http://img.blog.csdn.net/20160510143747413?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
当引入虚基类的时候,问题则得到了解决。

补充阅读程序-4

原文:http://blog.csdn.net/lemon_lebron/article/details/51362965

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!