Page 1 of 1

Rufen Sie die virtuelle Methode während der Konstruktion an, um den virtuellen Versand C ++ [Duplikat] zu umgehen

Posted: 12 Feb 2025, 08:59
by Guest
Ich habe den folgenden Code: < /p>

Code: Select all

class IInterface {
public:
virtual ~IInterface() {}
virtual void doSomething() = 0;
};

class Concrete : public IInterface {
public:
Concrete() : data{0} {doSomething();}
void doSomething() override {std::cout 
< /ul>
Sagen wir, wir machen konkrete c; < /code>. Dies ist, was ich denke, es passiert: < /p>
a) Speicher für Objekt C wird zugewiesen.
B) Der Konstruktor der abstrakten Klasse wird aufgerufen. Der __vptr < /code> zeigt auf eine reine virtuelle Funktion.
c) Der konkrete Konstruktor wird aufgerufen. Die Initialisierung von nicht statischen Mitgliedern findet statt. Initialisierung vollständig, weist die __VPTR  nun auf die Implementierung von Dosen durch Beton hin. Der Konstruktorkörper wird ausgeführt und iT  sollte  die Überschreibung aufrufen.>