6.1 不管公有继承 保护 还是私有 基类中的私有属性 ,都不可以继承下去
6.2 公有继承
6.2.1 父类中的protected 在子类中是 protected
6.2.2 父类中的public 在子类中是 public
6.3 保护继承
6.3.1 父类中的protected 在子类中是 protected
6.3.2 父类中的public 在子类中是 protected
6.4 私有继承
6.4.1 父类中的protected 在子类中是 private
6.4.2 父类中的public 在子类中是 private
public.cpp
class Base1
{
public:
int m_A;
protected:
int m_B;
private:
int m_C;
};
//公有继承
class Son1 : public Base1
{
public:
void func()
{
//cout << m_C << endl; //基类中私有的属性 不可继承
cout << m_A << endl; //基类中公有的属性 可继承,还是public
cout << m_B << endl;//基类中保护的属性 可继承,还是protected 类外访问不到
}
};
void test01() {
Son1 s1;
s1.m_A;
//s1.m_B;
}
protected.cpp
class Base2
{
public:
int m_A;
protected:
int m_B;
private:
int m_C;
};
class Son2 :protected Base2
{
public:
void func()
{
//cout << m_C << endl; //基类中私有的属性 不可继承
cout << m_A << endl;//基类中公有的属性 可继承,是protected
cout << m_B << endl;//基类中保护的属性 可继承,是protected
}
};
void test01() {
//Son2 s;
//s.m_A; 不能访问
}
private.cpp
class Base3
{
public:
int m_A;
protected:
int m_B;
private:
int m_C;
};
class Son3 :private Base3
{
public:
void func()
{
//cout << m_C << endl; //基类中私有的属性 不可继承
cout << m_A << endl; //基类中公有的属性 可继承,是private
cout << m_B << endl;//基类中保护的属性 可继承,是private
}
};
class GrandSon3 :public Son3
{
public:
void myFunc()
{
//cout << m_A << endl; //孙子类中 访问不到 m_A,因为在Son3中m_A已经是私有属性了
}
};