抽象類別和向量
在物件導向程式設計中,抽象類別充當定義各類別之間共同行為的藍圖。然而,在嘗試實例化抽象類別向量時可能會遇到問題。
出現「無法實例化抽象類別」錯誤是因為向量要求其元素是可以分配記憶體的特定物件。另一方面,抽象類別並不打算直接實例化,因為它們包含必須重寫的純虛函數。
為了克服這個問題,一種解決方法是將抽象類別替換為實現必要的虛擬函數,如建議的:
class IFunnyInterface { public: virtual void IamFunny() { throw new std::exception("not implemented"); } };
但是,這種方法可能並不可取,因為它引入了不必要的實作細節,這些細節可以在抽象基礎中避免
更符合 C語言習慣的解決方案是使用指向抽象類別的指標向量:
std::vector<IFunnyInterface*> ifVec;
這允許多態行為並防止物件切片。指向抽象類別的指標能夠儲存衍生類別的對象,使您能夠保留對每種類型的特定功能的存取。
以上是如何在 C 中使用抽象類別向量?的詳細內容。更多資訊請關注PHP中文網其他相關文章!