|
|
|
看下面一段代码
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。