Почему ключевое слово «виртуальное» используется в классах, на которых он не имеет эффекта?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему ключевое слово «виртуальное» используется в классах, на которых он не имеет эффекта?

Сообщение Anonymous »

Рассмотрим следующий код C ++: < /p>

Код: Выделить всё

class A
{
public:
int i;
}
class B: virtual public A{};
class C: virtual public A{};
class D: public B, public C{};

int main()
{
D obj;
obj.i = 0;
return 0;
}
< /code>
Код является классическим примером виртуальной обработки алмаза. Я обеспокоен тем, почему мы использовали слово virtual 
с классом B и c ? Ключевое слово не влияет на классы. Кроме того, когда я пишу класс B или c , я не думаю об использовании его позже в качестве базового класса некоторого производного класса, и даже я могу не знать, что классы B или c имеют братьев и сестер. Итак, я должен действительно добавить ключевое слово, которое последнее возвращает к ним, когда я буду реализовать класс D . Это кажется нелогичным для меня. Почему я должен беспокоить класс B или c , когда они не заботятся о разработке алмазной структуры. Для меня следующее логично: < /p>

Код: Выделить всё

class A
{
public:
int i;
}
class B: public A{};
class C: public A{};
class D: virtual public B, virtual public C{};
Здесь я добавил ключевое слово Virtual Когда я заметил, что там развивается структура алмаза.
Но C ++ не разработана таким образом. Кто -нибудь может сказать, каким был мотив или воображение такого дизайна?

Подробнее здесь: https://stackoverflow.com/questions/794 ... -no-effect
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»