是否可以在C ++中从super更改派生类的变量?
(使用一个例子可能会让我的问题更清楚......)
说我有以下类和函数:
class SuperClass // super class
{
int myClassVariable;
public:
virtual void modify()
{
myClassVariable = 10;
}
};
class DerivedClass : public SuperClass // derived class
{
int myClassVariable;
public:
void modify()
{
super::modify();
}
};
如果我执行以下操作:
DerivedClass d;
d.modify();
问题:谁myClassVariable
被修改为10?超类或派生类?
(先谢谢你的耐心和帮助..希望我的问题不是一个愚蠢的问题!)
谢谢:)
答案 0 :(得分:4)
这是超级类,因为成员在超类中被修改而成员不能是虚拟的,只有方法可以是虚拟的。
另请注意,modify()在派生类中不是虚拟的(相对于超类),它只对派生类的子项是虚拟的,因为在超类中没有将modify()声明为虚拟。