|
|
|
看下面一段代码
class B
{
public:
virtual void func(){cout<<"B"<<endl;}
protected:
void TestB(){}
~B(){}
};
class D : public B
{
public:
virtual void func(){cout<<"D"<<endl;}
void test()
{
D d;
d.TestB(); //success
B &rb = d;
//rb.TestB(); //error
B b = d;
//b.TestB(); //error
}
};
因为class D继承与class B,所以class D能够在访问一个class D对象的B part的protected area, 但是并不能直接通过一个class B的对象(指针或引用)来访问其protected areas。
本文通过一个C++代码示例介绍了如何在派生类中访问基类的受保护成员,并解释了为何不能通过基类引用直接访问这些成员。

380

被折叠的 条评论
为什么被折叠?



