C++第07课 继承 (二)
1.继承的传递性
继承具有传递性:无论继承多少次,属性都存在
2.多继承
class A { public: A(string name1, string name2) :name1(name1), name2(name2) {} protected: string name1; string name2; }; class B { public: B(string name1, string name2) :name1(name1), name2(name2) {} protected: string name1; string name2; }; //多继承中,构造顺序只和继承顺序有关,和初始化参数列表无关 class C :public A,protected B{ public: C(string Aname1, string Aname2, string Bname1, string Bname2) :A(Aname1, Aname2), B(Bname1, Bname2) { this->name1 = Aname1 + Bname1; this->name2 = Aname2 + Bname2; } void print() { cout << name1 << "\t" << name2 << endl; } protected: string name1; string name2; }; int main() { C c("欧阳", "峰", "上官", "云"); //欧阳上官 峰云 c.print(); return 0; }
3.继承中的特殊成员
继承的静态属性是子类和父类共有的属性。
静态成员函数不能直接访问非静态数据成员,必须指定对象。
class parent { public: parent() { num++; } static int num; }; int parent::num = 0; class son :public parent{ public: protected: }; int main() { parent p; cout << parent::num << endl; //1 son s; cout << son::num << endl; //2 cout << parent::num << endl; //2 return 0; }