关于C++的private继承问题

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();
}

 该程序的错误很显然了 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值