c++虚继承
1 #include <iostream> 2 3 using std::cin; 4 using std::cout; 5 using std::endl; 6 7 class Base{ 8 public: 9 Base(int a):m(a){} 10 private: 11 int m; 12 int m1; 13 }; 14 15 class sub1: public virtual Base 16 { 17 public: 18 sub1(int a): Base(a) {} 19 }; 20 21 class sub2: public virtual Base 22 { 23 public: 24 sub2(int a): Base(a) {} 25 }; 26 27 class Drive: public sub1, public sub2 28 { 29 public: 30 Drive(int a): Base(a), sub1(a), sub2(a) {} 31 }; 32 33 int main(void) 34 { 35 Drive a(2); 36 cout<< sizeof(a) <<endl; 37 38 system("PAUSE"); 39 return 0; 40 }
Base 即为虚基类
通过虚继承可以解决代码冗余重复问题
虚继承会增加一个标记位