今天被问到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