Результаты поиска по запросу "virtual-inheritance"

1 ответ

Обойти это примерно так:

я есть алмазная иерархия классов: A / \ B C \ / DЧтобы избежать двух копий A в D, нам нужно использовать виртуальное наследование в B и C. class A { }; class B: virtual public A {}; class C: virtual public A { }; class D: public B, public C { ...

5 ответов

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

аюсь разобраться в утверждении в книге эффективно C ++. Ниже приведена схема наследования для множественного наследования. Теперь в книге говорится, что для каждого vptr требуется отдельная память в каждом классе. Также это делает следующее ...

3 ответа

@atoMerz Переписан ответ.

имаю необходимость виртуального наследования при использовании множественного наследования - это решает проблему Dreaded Diamond. Но что, если я не использую множественное наследование?Есть ли необходимость в виртуальном наследовании ...

ТОП публикаций

2 ответа

, Попробуй.

уstatic_cast не может опуститься с виртуальной базы? struct A {}; struct B : public virtual A {}; struct C : public virtual A {}; struct D : public B, public C {}; int main() { D d; A& a = d; D* p = static_cast<D*>(&a); //error }g ++ 4.5 ...

6 ответов

Например, это позволяет, и они могут быть весьма полезными.

я есть базовый класс и производный, и я хочу изменить базовые функции, сохраняя их статическими, так как они должны быть переданы другим функциям как статические. Как я могу это сделать?

4 ответа

Для устранения неоднозначности используется виртуальное наследование.

ел это на веб-сайте, читая о виртуальном наследовании в C ++ Когда используется множественное наследование, иногда необходимо использовать виртуальное наследование. Хорошим примером для этого является стандартная иерархия классов ...

5 ответов

Не беспокойтесь о производительности, компилятор не дублирует код для методов.

омпиляторы реализуют виртуальное наследование? В следующем коде: class A { public: A(int) {} }; class B : public virtual A { public: B() : A(1) {} }; class C : public B { public: C() : A(3), B() {} };Генерирует ли компилятор два ...

5 ответов

Размеры классов с виртуальным наследованием в C ++

#include<iostream> using namespace std; class abc { int a; }; class xyz : public virtual abc { int b; }; int main() { abc obj; xyz obj1; cout<<endl<<sizeof(obj); cout<<endl<<sizeof(obj1); return 0; }Ответы будут зависеть от компилятора, но ...

3 ответа

c ++ виртуальное наследование

Проблема: class Base { public: Base(Base* pParent); /* implements basic stuff */ }; class A : virtual public Base { public: A(A* pParent) : Base(pParent) {} /* ... */ }; class B : virtual public Base { public: B(B* pParent) : Base(pParent) {} /* ...

1 ответ

C ++ абстрактные конструкторы / деструкторы базового класса - общая корректность

Недавно я стал тупым разработчиком, поэтому я сделал решающий шаг, получил книгу по С ++ и научился правильно делать вещи. В моей голове я знаю, что я хотел бы сделать. Я действительно хочуInterface что при наследовании должен быть переопределен ...