Warum wird das Keyword "Virtual" in Klassen verwendet, auf deren Auswirkung es keine Wirkung hat?C++

Programme in C++. Entwicklerforum
Anonymous
 Warum wird das Keyword "Virtual" in Klassen verwendet, auf deren Auswirkung es keine Wirkung hat?

Post by Anonymous »

Betrachten Sie den folgenden C ++ - Code: < /p>

Code: Select all

class A
{
public:
int i;
}
class B: virtual public A{};
class C: virtual public A{};
class D: public B, public C{};

int main()
{
D obj;
obj.i = 0;
return 0;
}
< /code>
Der Code ist das klassische Beispiel für die Diamantstruktur der virtuellen Vererbung. Mein Anliegen ist, warum wir das Wort Virtual 
mit Klasse B und c verwendet haben? Das Schlüsselwort hat keinen Einfluss auf die Klassen. Wenn ich die Klasse B oder c schreibe, denke ich nicht darüber nach, sie später als Basisklasse einer abgeleiteten Klasse zu verwenden, und selbst ich weiß möglicherweise nicht, dass die Klassen B oder c Geschwister haben. Ich muss also das Schlüsselwort hinzufügen, der zu ihnen zurückkommt, wenn ich die Klasse D implementieren werde. Dies scheint mir nicht intuitiv zu sein. Warum ich die Klasse B oder c stören muss, wenn sie keine Bedenken hinsichtlich der hier entwickelten Diamantstruktur haben. Für mich ist das Folgende logisch: < /p>

Code: Select all

class A
{
public:
int i;
}
class B: public A{};
class C: public A{};
class D: virtual public B, virtual public C{};
Hier habe ich das Keyword Virtual hinzugefügt, als ich feststellte, dass sich dort eine Diamantstruktur weiterentwickelt. Kann jemand sagen, was das Motiv oder die Vorstellungskraft hinter solchem ​​Design war?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post