Rufen Sie die virtuelle Methode während der Konstruktion an, um den virtuellen Versand C ++ [Duplikat] zu umgehen
Posted: 12 Feb 2025, 08:59
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.>