Tag: virtual-inheritance

Virtuelle Vererbung wird verwendet, um zu lösen die Gefürchtete Diamant-Problem im Zusammenhang mit der Mehrfachvererbung in C++.

Virtuelle Tabellen und Speicher-layout in mehrere virtuelle Vererbung

Anzahl der Antworten 2 Antworten
Betrachten folgende Hierarchie: struct A { int a; A() { f(0); } A(int i) { f(i); } virtual void f(int i) { cout << i; } }; struct B1 : virtual A { int b1; B1(int i)

ist die virtuelle Vererbung von rein abstrakten Klassen (Schnittstellen) notwendig

Anzahl der Antworten 4 Antworten
Warum ist es, dass in den folgenden code der compiler beschwert sich, dass PureAbstractBase ist ein Mehrdeutiger base Klasse MultiplyInheritedClass? Ich merke, ich habe zwei Kopien der PureAbstractBase im MultiplyInheritedClass und dass FirstConreteClass und SecondConreteClass abgeleitet werden

Mehrdeutigkeit bei Mehrfachvererbung von interfaces in C++

Anzahl der Antworten 4 Antworten
Machte ich einen test-code wie folgt: #include <iostream> using namespace std; #ifndef interface #define interface struct #endif interface Base { virtual void funcBase() = 0; }; interface Derived1 : public Base { virtual void funcDerived1() = 0;

Warum kann nicht static_cast verwendet werden, um nach unten geworfen wird, wenn virtuelle Vererbung beteiligt ist?

Anzahl der Antworten 6 Antworten
Betrachten Sie den folgenden code: struct Base {}; struct Derived : public virtual Base {}; void f() { Base* b = new Derived; Derived* d = static_cast<Derived*>(b); } Dies ist verboten, durch die standard ( [n3290: 5.2.9/2]

Warum ist der Default-Konstruktor aufgerufen, in virtuelle Vererbung?

Anzahl der Antworten 1 Antworten
Ich verstehe nicht, warum in dem folgenden code, wenn ich instantiieren eines Objekts vom Typ daughter die Standard - grandmother() Konstruktor aufgerufen wird ? Dachte ich, dass entweder die grandmother(int) Konstruktor aufgerufen werden soll (Folgen Sie der

Befestigung C++ Mehrfachvererbung Mehrdeutig Nennen

Anzahl der Antworten 3 Antworten
Ich habe drei Klassen wie folgt aufgebaut: #include <iostream> using namespace std; class Keyword { public: virtual float GetValue() = 0; }; class CharacterKeyword : public Keyword { public: virtual float GetValue(){return _value;} private: float _value; };

Letzte Klasse in c++

Anzahl der Antworten 7 Antworten
class Temp { private: ~Temp() {} friend class Final; }; class Final : virtual public Temp { public: void fun() { cout<<"In base"; } }; class Derived : public Final { }; void main() { Derived obj;

Virtuelle Tabellen und virtuellen Zeiger für mehrere virtuelle Vererbung und Typumwandlung

Anzahl der Antworten 3 Antworten
Ich bin etwas verwirrt über vptr und Darstellung der Objekte in den Speicher, und hoffe Ihr könnt mir helfen zu verstehen die Sache besser. Betrachten B erbt von A und beide definieren virtuelle Funktionen f(). Von dem,

C++ abstrakte Basisklasse Konstruktoren/Destruktoren - Allgemeine Richtigkeit

Anzahl der Antworten 1 Antworten
Vor kurzem habe ich dumm wie ein Entwickler, so nahm ich den Sprung, hab ein C++ Buch und lernen, wie man die Dinge richtig zu machen. In meinem Kopf, ich weiß, was ich tun möchte. Ich effektiv

Was ist in C ++ eine virtuelle Basisklasse?

Anzahl der Antworten 10 Antworten
Möchte ich wissen, was ein "virtuelle Basisklasse" ist und was es bedeutet. Lassen Sie mich ein Beispiel zeigen: class Foo { public: void DoSomething() { /* ... */ } }; class Bar : public virtual Foo {

Warum kann static_cast nicht zum Down-Cast verwendet werden, wenn virtuelle Vererbung beteiligt ist?

Anzahl der Antworten 6 Antworten
Betrachten Sie den folgenden code: struct Base {}; struct Derived : public virtual Base {}; void f() { Base* b = new Derived; Derived* d = static_cast<Derived*>(b); } Dies ist verboten, durch die standard ( [n3290: 5.2.9/2]

C ++ Vererbung über Dominanzwarnung

Anzahl der Antworten 1 Antworten
Ich versuche zu implementieren ist eine ziemlich große Objekte, die viele Schnittstellen. Einige dieser Schnittstellen sind rein virtuell. Vielleicht habe ich ein problem mit der diamond-Vererbung. Visual Studio meldet eine Warnung von C4250 ('class1' : inherits 'class2::member'

Wie löst die virtuelle Vererbung die Mehrdeutigkeit "Diamant" (Mehrfachvererbung)?

Anzahl der Antworten 7 Antworten
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

C ++ kann nicht von Base A zu abgeleitetem Typ B über die virtuelle Basis A konvertieren

Anzahl der Antworten 7 Antworten
Habe ich drei Klassen: class A {}; class B : virtual public A {}; class C : virtual public A {}; class D: public B, public C {}; Versucht, eine statische Besetzung von A* zu B* bekomme

Warum wird der Standardkonstruktor in der virtuellen Vererbung aufgerufen?

Anzahl der Antworten 1 Antworten
Ich verstehe nicht, warum in dem folgenden code, wenn ich instantiieren eines Objekts vom Typ daughter die Standard - grandmother() Konstruktor aufgerufen wird ? Dachte ich, dass entweder die grandmother(int) Konstruktor aufgerufen werden soll (Folgen Sie der