C++-------继承问题以及多继承virtual的用法
class student { public: student(int id,string name) { this->id=id; this->name=name; } private: int id; string name; } class student2:public student { public: student2(int id,string name,int s):student(id,name),score(c){} private: int score; } /*若在主函数中,student s1(20,"lihua"); student2 s2(30,"lijun",90); 此时的s2依然是其初始化的值而不是s1中的数值, 可以这么理解,继承的仅仅是父类的内存结构 子类依然是子类,父类与子类空间是相互独立的 */ //公有继承 class a { public: int item; protected : int j; private: int x;*/ }; class b:public a { public: void show() { cout<<i; //i是基类的公有成员变量,在公有继承类的【内部、外部】可以访问 cout<<j; //j是基类的保护成员变量,在公有继承类的【内部】可以访问 cout<<x; //x是基类的私有成员变量,在公有继承类的【内部】不可以访问 } }; //多继承(菱形继承) 一个类可以继承一个或两个类 如:class A:public B,public C {}; 若有一个基类 class X: { int m; } 且B、C分别公有继承X 则 main()中,A.m是错误的,因为继承的B、C都有m,必须指明作用域 A.B::m此时才是正确的 多继承产生的变量重复多份继承问题解决办法:(虚继承virtual关键字) 如上类:class B:virtual public X{}; class C:virtual public X{}; class A:public B,public C{};