读书人

保护承继的派生类它的子类可以访问基

发布时间: 2012-09-28 00:03:35 作者: rapoo

保护继承的派生类,它的子类可以访问基类的公共或保护成员吗?
RT,这个问题在两本书上看到不同的结论,不知道是不是印错了,所以请高手指教!

[解决办法]
无论是public、protected、private中的哪一种继承,所有继承Base的类对Base中的成员具有相同的访问。派生访问标号控制的不是这个,而是派生类的用户对从Base继承而来的成员的访问。

写个代码测试一下:
#include<iostream>

using namespace std;

class Base
{
public:
void basemem(); // public member
public:
int i; // protected member
};

class protected_derived : protected Base
{
public:
int use_base() { return i; } // ok: derived classes can access i
};

class public_derived : public Base
{
public:
int use_base() { return i; } // ok: derived classes can access i
};

int main()
{
protected_derived d0;
d0.i = 0; // error: 'Base::i' not accessible because 'protected_derived' uses 'protected' to inherit from 'Base'


public_derived d1;
d1.i = 1; // ok

return 0;
}

读书人网 >C++

热点推荐