通过调用super来改变类变量

时间:2011-05-26 22:10:18

标签: c++ inheritance

是否可以在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?超类或派生类?

(先谢谢你的耐心和帮助..希望我的问题不是一个愚蠢的问题!)

谢谢:)

1 个答案:

答案 0 :(得分:4)

这是超级类,因为成员在超类中被修改而成员不能是虚拟的,只有方法可以是虚拟的。

另请注意,modify()在派生类中不是虚拟的(相对于超类),它只对派生类的子项是虚拟的,因为在超类中没有将modify()声明为虚拟。