Изменение переменных класса с помощью вызова super - PullRequest
1 голос
/ 27 мая 2011

Можно ли изменить переменную производного класса от супер в C ++?

(Использование примера может прояснить мой вопрос ..)

Скажите, у меня есть следующие классыи функции:

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 Ответ

4 голосов
/ 27 мая 2011

Это суперкласс, поскольку член изменен в суперклассе, и член не может быть виртуальным, только методы могут быть виртуальными.

Также обратите внимание, что modify () не является виртуальным в производном классе (по отношению к суперклассу), он является виртуальным только для потомков производного класса, так как modify () не был объявлен виртуальным в суперклассе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...