考慮以下C 程式碼:
<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>
在一個單獨的類別中:
<code class="cpp">void some_method() { vector<Instruction> v; Instruction* i = new Add(1,2,3) v.push_back(*i); }</code>
在另一個類別中:
<code class="cpp">void some_other_method() { Instruction ins = v.back(); ins.execute(); }</code>
這些類別共享指令向量。但是,我們遇到了有關執行函數的問題。它會保留其 Add 類型嗎?
不幸的是,它不會。向量儲存值,而不是引用。這意味著指令物件將在某個時刻被複製,從而導致一種稱為「物件切片」的現象。
要解決此問題,請考慮使用向量或者,更有效地,向量 >.
以上是在 C 中使用「向量」時是否會發生物件切片?的詳細內容。更多資訊請關注PHP中文網其他相關文章!