Articles of virtual

Como a inheritance virtual resolve a ambigüidade do “diamante” (inheritance múltipla)?

class A { public: void eat(){ cout<<"A";} }; class B: virtual public A { public: void eat(){ cout<<"B";} }; class C: virtual public A { public: void eat(){ cout<<"C";} }; class D: public B,C { public: void eat(){ cout<eat(); } Eu entendo o problema do diamante, e acima do código não tem esse problema. Como […]

Membros virtuais estáticos C ++?

É possível em C ++ ter uma function de membro que seja static e virtual ? Aparentemente, não há uma maneira simples de fazê-lo ( static virtual member(); é um erro de compilation), mas há pelo menos uma maneira de obter o mesmo efeito? IE: struct Object { struct TypeInformation; static virtual const TypeInformation &GetTypeInformation() […]

inheritance virtual de c ++

Problema: 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) {} /* … */ }; class C : public A, public B { […]

Por que o polymorphism não funciona sem pointers / referências?

Eu já encontrei algumas perguntas sobre SO com título similar, mas quando li as respostas, elas estavam focando em diferentes partes da questão que eram realmente específicas (por exemplo, STL / containers). Alguém poderia me mostrar por que você deve usar pointers / referências para implementar o polymorphism? Eu posso entender que os pointers podem […]

Função virtual C ++ do construtor

Por que o exemplo a seguir imprime “0” e o que deve ser alterado para que ele imprima “1” como eu esperava? #include struct base { virtual const int value() const { return 0; } base() { std::cout << value() << std::endl; } virtual ~base() {} }; struct derived : public base { virtual const […]

Acessando membros da class em um ponteiro NULL

Eu estava experimentando com C ++ e achei o código abaixo muito estranho. class Foo{ public: virtual void say_virtual_hi(){ std::cout << "Virtual Hi"; } void say_hi() { std::cout <say_hi(); // works well foo->say_virtual_hi(); // will crash the app return 0; } Eu sei que a chamada de método virtual falha porque requer uma pesquisa vtable […]

C ++ Virtual / Pure Virtual Explained

O que exatamente significa se uma function é definida como virtual e é a mesma que virtual pura?