关于公有继承

来源:百度知道 编辑:UC知道 时间:2024/05/17 13:40:01
#include "stdio.h"

class A
{
private:
int a;
protected:
int b;
};

class B: public A
{
public:
void dis()
{
printf("%d",a);
}

};

void main()
{
B bb;
bb.dis();
}
公有继承中,基类的公有成员和保护成员,私有成员在派生类中依然是公有成员保护成员和私有成员。那么派生类的成员函数应该可以访问基类的所有成员
可是上面的程序报错:error C2248: 'a' : cannot access private member declared in class 'A'

无论是公有继承、私有继承还是保护性继承,派生类都无法访问基类的私有成员。你程序中虽然class B公有继承class A, 但a是class A的私有成员,所以会报错。你把int a;移动到public下面问题就会消失。

看书看得不仔细...- -私有的不管什么继承都是不能访问的.

基类的私有成员是不能被派生类访问的,虽然它确实在派生类中存在。这就是为什么会有protected的原因。