C++有三种继承方式:公有继承,私有继承,保护继承
这里只对其中私有继承做个知识笔记,以防忘记。
private: 关键字意味着除了该类型的创建者和类的内部成员函数之外,对象及子类都不能访问。(这里注意,即使该类的对象都不能直接访问哦,只有通过对象的内部成员函数才可以访问)
采用公用继承方式时,基类的公用成员和保护成员在派生类中仍然保持其公用成员和保护成员的属性,而基类的私有成员在派生类中并没有成为派生类的私有成员,它仍然是基类的私有成员,只有基类的成员函数可以引用它,而不能被派生类的成员函数引用,因此就成为派生类中的不可访问的成员。
当一个类B私有继承类A的时候,A中的公有成员和保护成员以及私有成员在B类中都是私有成员,所以导致B类的对象不能直接访问A类中的任何成员,只有通过内部成员函数才可以访问。
且看下面的一个例子:
class A
{
public:
void fun()
{cout<< "A"}
}
class B:private A
{
public:
void funb()
{cout<<"B"}
}
class C:public A
{
public:
void func()
{cout<<"C"}
}
int main()
{
B b;
C c;
B.fun(); //错误
C.fun();
}
该程序的错误很显然了