C++基础知识: 公有继承,保护继承,私有继承的总结,私有继承的用意何在

本文探讨了C++中私有继承的用途,指出其不仅是访问权限的改变,更是"用...来实现"的设计理念。私有继承意味着类之间不存在is-a关系,而是has-a关系的实现,避免了隐式类型转换,并在需要访问基类保护成员或重定义虚拟函数时发挥作用。私有继承有时优于组合设计模式,但在使用时应谨慎选择,确保它是最佳的类间关系表示方法。
摘要由CSDN通过智能技术生成


今天被问到C++中私有继承的作用是什么?第一反应是关于访问权限的改变,基类被子类私有继承后,基类中即使是共有public,保护protected的成员变量或者成员函数都会在子类中变为私有成员和私有成员变量,子类的派生类或者子类的对象再也无法访问这些成员和成员变量。


其实,这个回答只答出了最为基本的概念,那就是私有继承对访问权限的改变。 但是,更为深处的理解是,既然私有继承这么小众化,为什么我们还要使用私有继承?


回答之前,再来复习一下public,protected,private的作用


作用域

1.  类的一个特征就是封装, pubic 和 private 作用就是实现这一目的

Public:  可以被该类中的函数,子类的函数,友元函数访问,也可以由该类的对象访问


Protected: 可以被该类中的函数,子类的函数,友元函数访问, 但不可以被该类的对象访问(类外)


Private: 只能被该类中的函数,友元函数访问, 不可以被子类的函数访问,也不可以被该类的对象访问


附上例子说明:

#include<iostream>
#include<assert.h>

using namespace std;

class A
{public:
  int a;
  A(){    a1 = 1;    a2 = 2;    a3 = 3;    a = 4;  }
  void fun()
  {
    cout << a << endl;    //正确
    cout << a1 << endl;   //正确
    cout << a2 << endl;   //正确,类内访问
    cout << a3 << endl;   //正确,类内访问
  }
public:
  int a1;
  void publicfun(){}

protected:
  int a2;
  voi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值