public:公有继承
protected:保护继承
private:私有继承
关系:
不管公有继承 保护 还是私有 基类中的私有属性 ,都不可以继承下去
公有继承
父类中的protected 在子类中是 protected
父类中的public 在子类中是 public
保护继承
父类中的protected 在子类中是 protected
父类中的public 在子类中是 protected
私有继承
父类中的protected 在子类中是 private
父类中的public 在子类中是 private
#define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; //基类 class A { public: int mA; protected: int mB; private: int mC; }; //1. 公有(public)继承 class B : public A { public: void PrintB() { cout << mA << endl; //可访问基类public属性 cout << mB << endl; //可访问基类protected属性 //cout << mC << endl; //不可访问基类private属性 } }; class SubB : public B { void PrintSubB() { cout << mA << endl; //可访问基类public属性 cout << mB << endl; //可访问基类protected属性 //cout << mC << endl; //不可访问基类private属性 } }; void test01() { B b; cout << b.mA << endl; //可访问基类public属性 //cout << b.mB << endl; //不可访问基类protected属性 //cout << b.mC << endl; //不可访问基类private属性 } //2. 私有(private)继承 class C : private A { public: void PrintC() { cout << mA << endl; //可访问基类public属性 cout << mB << endl; //可访问基类protected属性 //cout << mC << endl; //不可访问基类private属性 } }; class SubC : public C { void PrintSubC() { //cout << mA << endl; //不可访问基类public属性 //cout << mB << endl; //不可访问基类protected属性 //cout << mC << endl; //不可访问基类private属性 } }; void test02() { C c; //cout << c.mA << endl; //不可访问基类public属性 //cout << c.mB << endl; //不可访问基类protected属性 //cout << c.mC << endl; //不可访问基类private属性 } //3. 保护(protected)继承 class D : protected A { public: void PrintD() { cout << mA << endl; //可访问基类public属性 cout << mB << endl; //可访问基类protected属性 //cout << mC << endl; //不可访问基类private属性 } }; class SubD : public D { void PrintD() { cout << mA << endl; //可访问基类public属性 cout << mB << endl; //可访问基类protected属性 //cout << mC << endl; //不可访问基类private属性 } }; void test03() { D d; //cout << d.mA << endl; //不可访问基类public属性 //cout << d.mB << endl; //不可访问基类protected属性 //cout << d.mC << endl; //不可访问基类private属性 } int main() { system("Pause"); return 0; }