c++ - 通过调用 super 改变类变量

标签 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?父类(super class)还是派生类?

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

谢谢:)

最佳答案

它是父类,因为成员是在父类中修改的,成员不能是虚的,只有方法可以是虚的。

另请注意,modify() 在派生类中不是虚函数(相对于父类(super class)而言),它仅对派生类的子类是虚函数,因为 modify() 未在父类(super class)中声明为虚函数。

关于c++ - 通过调用 super 改变类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6145715/

相关文章:

c++ - 热传导二维傅立叶 libmesh/deal.II

java - EclipseLink 和 Spring OXM 继承问题

c++ - (C++ 继承)在 STL 容器中存储具有共同父对象的对象

java - 为什么有时我们必须在 Android 中调用 super ?

javascript - 将 .apply() 与 'new' 运算符一起使用。这可能吗?

c++ - 将包含数组的 BSON 文档转换为 JSON,从转换后的 JSON (C++) 中删除数组

c++ - 使用柯南时,如何修复CMake中的未知命令错误?

C++ 套接字从未准备好使用轮询进行写入

c++ - C++ 中的覆盖函数不起作用

c++ - 替换字符会增加一个字符