标签:
/*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="" />
当引入虚基类的时候,问题则得到了解决。
标签:
原文地址:http://blog.csdn.net/lemon_lebron/article/details/51362965