Heim > Artikel > Backend-Entwicklung > Kommt es zu Object Slicing, wenn in C ein „Vektor“ verwendet wird?
Betrachten Sie den folgenden C-Code:
<code class="cpp">class Instruction { public: virtual void execute() { } }; class Add: public Instruction { private: int a; int b; int c; public: Add(int x, int y, int z) {a=x;b=y;c=z;} void execute() { a = b + c; } };</code>
In einer separaten Klasse:
<code class="cpp">void some_method() { vector<Instruction> v; Instruction* i = new Add(1,2,3) v.push_back(*i); }</code>
Und in einer anderen Klasse:
<code class="cpp">void some_other_method() { Instruction ins = v.back(); ins.execute(); }</code>
Diese Klassen teilen sich den Instruction-Vektor. Wir stoßen jedoch auf Bedenken hinsichtlich der Ausführungsfunktion. Wird der Add-Typ beibehalten?
Leider ist dies nicht der Fall. Vektor
Um dieses Problem zu beheben, sollten Sie die Verwendung von vector
Das obige ist der detaillierte Inhalt vonKommt es zu Object Slicing, wenn in C ein „Vektor“ verwendet wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!