Resultados de la búsqueda a petición "virtual-inheritance"

5 la respuesta

Es necesaria la herencia virtual para excepciones?

Entiendo la necesidad de herencia virtual cuando uso herencia múltiple: resuelve el temido problema del diamante. ¿Pero qué pasa si no estoy usando herencia múltiple? @Existe alguna necesidad de herencia virtua Me parece recordar haber ...

5 la respuesta

Cómo se implementa la herencia virtual de C ++ en los compiladores?

Cómo implementan los compiladores la herencia virtual? En el siguiente código: class A { public: A(int) {} }; class B : public virtual A { public: B() : A(1) {} }; class C : public B { public: C() : A(3), B() {} }; ¿Un compilador genera dos ...

5 la respuesta

Tamaños de clase con herencia virtual en 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; } Las respuestas dependerían del ...

6 la respuesta

¿Por qué no se puede utilizar static_cast para hacer down-cast cuando se trata de una herencia virtual?

Considere el siguiente código: struct Base {}; struct Derived : public virtual Base {}; void f() { Base* b = new Derived; Derived* d = static_cast<Derived*>(b); } Esto está prohibido por el estándar [n3290: 5.2.9/2]) para que el código no se ...

6 la respuesta

Herencia virtual y vtable vacía en la clase base

Hay este código: #include <iostream> class Base { int x; }; class Derived : virtual public Base { int y; }; int main() { std::cout << sizeof(Derived) << std::endl; // prints 12 return 0; }He leído que cuando alguna clase se hereda virtualmente, ...

7 la respuesta

¿Cómo resuelve la herencia virtual la ambigüedad del "diamante" (herencia múltiple)?

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<<"D";} }; int main(){ A *a = ...

7 la respuesta

C ++ no puede convertir de la base A al tipo B derivado a través de la base virtual A

Tengo tres clases: class A {}; class B : virtual public A {}; class C : virtual public A {}; class D: public B, public C {};Al intentar un reparto estático de A * a B * obtengo el siguiente error: cannot convert from base A to derived type B ...

7 la respuesta

Funciones virtuales estáticas en c ++

Tengo una clase base y una derivada y quiero cambiar las funciones base mientras las mantengo estáticas, ya que deberían pasarse a otras funciones como estáticas. ¿Cómo puedo hacer eso

10 la respuesta

En C ++, ¿qué es una clase base virtual?

Quiero saber que a &quot;clase base virtual&quot;Es y lo que significa.Déjame mostrarte un ejemplo: