继承不是也继承了父类的私有属性吗?为什么不能在子类中访问?

来源:百度知道 编辑:UC知道 时间:2024/05/18 10:39:03
class a
{
public:
a(int b){val=b;};
private:
int val;
};
class c:public a
{
public:
c(int h):a(h){};
void print(){cout<<val;};
};
此时print函数会出现问题,说是无法访问父类私有属性,但是子类已经继承了父类属性了呀?

private属性确实能够被继承,但是因为访问权限是private,只有在该类内才能访问。你可以在基类中加一句friend class c;将派生类设为基类的友元类来访问。

你是继承了父属性,但是你只能用你继承的父方法去访问你继承的父属性。

private属性是不能被子类使用的,protected的可以