C++ 虚继承
来源:互联网 发布:nike高仿淘宝 编辑:程序博客网 时间:2024/05/20 07:36
#include <cstdio>#include <string>#include <iostream>using namespace std;class Root {public:Root(){}virtual void v1(){cout<< "ROOT V1 is "<< endl;}virtual void v2(){cout<< "ROOT V2" << endl; }void over(){cout << "ROOT is show R_AGE is "<< r_age << endl;}protected:int r_age;};class TrunkA: virtual public Root{public:int t_age;TrunkA(){r_age = 1;}/*void v1(){cout << "TrunkA V1 " << endl;}*/void over(){cout<< "TrunkA is show R_age is " << r_age << endl;}};class TrunkB: virtual public Root{public:TrunkB(){r_age = 2;}/*virtual void v1(){cout<<"TrnkB V1" << endl;}void v2(){cout<< "TrunkB V2 " << endl;}*/void over(){cout << "TrunkB is show R_age is "<< r_age << endl;}};class TrunkC : public Root{public:void over() {cout << "TRUNKC R_AGE is"<< r_age << endl;}};class Leaves : public TrunkB, public TrunkA, public TrunkC{public :void over(){cout<< "Leaves is show "<< endl;}};int main(){Leaves L1;//含2个 ROOT 对象 (TrunkA, TrunkB 为虚继承共用一个 ROOT, TrunkC 使用一个ROOT)// 共用的ROOT 的r_age 为 先声明的TrunkA设置的变量值,值为 1;L1.over();//L1.v1();//L1.v2();//Root r1 = (Root)L1; --- errorTrunkB b = (TrunkB)L1;b.over();b.v1();Root rb = (Root)b; rb.over();TrunkA a = (TrunkA)L1;a.over();a.v1();a.v2();Root ra = (Root)a;ra.over();TrunkC c = (TrunkC)c;c.over();c.v1();c.v2();return 0;};
0 0
- C++-虚继承
- C++【多重继承和虚继承】
- (C++)继承、菱形继承和虚继承的那些事儿
- C++,继承、虚函数解惑!
- C++,继承、虚函数解惑!
- c继承
- C++----------------继承
- 【c#】继承
- C++:继承
- C++::继承
- [C++]继承
- 【C++】继承
- 【C#】继承
- 【c++】继承
- 【C++】继承
- c#-继承
- 【C++】 继承
- 【C#】继承
- 两个队列实现栈
- noj 2107 有趣的区间异或值(异或,找规律)
- NYOJ 5 Binary String Matching【string find的运用】
- 一些项目中遇到的小问题
- service的简单通信③
- C++ 虚继承
- CSU 1779 NBUT 1641 “错误的算法”(这是题目名)
- 深入理解HTTP协议
- React Native商城项目实战04 - 封装TabNavigator.Item的创建
- mysql中的锁
- POJ - 3254 Corn Fields (状态压缩 + DFS)
- JDBC连接数据库
- Kotlin vs Java on Android
- 【WEB-INF】WEB-INF是Java的WEB应用的安全目录