笔记:三种继承方式
protected(保护继承):
#include<iostream> using namespace std; class A{ public: int m_a; protected: int m_b; private: int m_c; }; class B:protected A{ public: void foo(){ cout << m_a << endl; cout << m_b << endl; //cout << m_c << endl;//基类的私有成员不能被子类保护继承调用 } }; int main(){ B b; //b.m_a = 1;//保护继承下,子类不能在函数外调用成员变量 b.foo(); getchar(); return 0; }
private(私有继承):
#include<iostream> using namespace std; class A{ public: int m_a; protected: int m_b; private: int m_c; public: void fooA(){ cout << m_a << m_b << m_c << endl; } }; class B:private A{ public: void foo(){ cout << m_a << m_b << endl; //cout << m_c << endl;//私有继承下,子类可以调用基类的共有,保护成员,但是不能调用私有成员 } }; int main(){ A a; a.m_a = 1;//外部可以调用基类的公共成员,不能调用保护以及私有 B b; //b.m_a = 2;//子类在外部不能调用基类的所有成员 //b.fooA(); b.foo(); getchar(); return 0; }
public(共有继承):
#include<iostream> using namespace std; class A{ public: int m_a; protected: int m_b; private: int m_c; public: void fooA(){ cout << m_a << m_b << m_c << endl; } }; class B:public A{ public: void foo(){ cout << m_a << m_b << endl; //cout << m_a << m_b << m_c << endl;//共有继承下,子类不能调用基类的私有成员 } }; int main(){ A a; a.m_a = 1;//外部可以调用基类的公共成员,不能调用保护以及私有 B b; b.m_a = 2;//子类在外部只能调用基类的共有成员 getchar(); return 0; }