Tag: virtual-inheritance
Virtuelle Vererbung wird verwendet, um zu lösen die Gefürchtete Diamant-Problem im Zusammenhang mit der Mehrfachvererbung in C++.
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)
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
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;
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]
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
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; };
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;
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,
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
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 {
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]
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'
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
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
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