class Base
{
int iBase;
public:
virtual void display()
{
cout<<"I am a Base Class"<<endl;
}
};
class Derived : public Base
{
int iDerived;
public:
Derived()
{
cout<<"In Derived Default Constructor"<<endl;
iDerived=10;
}
void display()
{
cout<<"I am in Derived Class"<<endl;
cout<<"value of iDerived :"<<iDerived<<endl;
iDerived=100;
cout<<"value of iDerived :"<<iDerived<<endl;
}
};
在主要:
Base *varBase;
Derived varDerived;
varBase = &varDerived;
varBase->display();
varBase->iDerived=10; // Error: iDerived is not a member of Base: ?????
大家好,
我正在尝试了解对象切片并尝试使用一些示例程序。
我在某处读到了指针引用 Objcet Slicing 不会发生。
但是在下面的示例中,我注意到iDerived
无法从 访问Base pointer(varBase)
,但是virtual display method of class
即使它不在显示方法的本地范围内,我也可以访问。
现在我的问题是:
- 为什么我只能使用虚函数访问 iDerived 变量,这是否正确?
- 如何避免对象切片。