首頁 >後端開發 >C++ >如何在 C 中使用抽象類別向量?

如何在 C 中使用抽象類別向量?

Susan Sarandon
Susan Sarandon原創
2024-12-17 13:09:25961瀏覽

How Can I Use a Vector of Abstract Classes in C  ?

抽象類別和向量

在物件導向程式設計中,抽象類別充當定義各類別之間共同行為的藍圖。然而,在嘗試實例化抽象類別向量時可能會遇到問題。

出現「無法實例化抽象類別」錯誤是因為向量要求其元素是可以分配記憶體的特定物件。另一方面,抽象類別並不打算直接實例化,因為它們包含必須重寫的純虛函數。

為了克服這個問題,一種解決方法是將抽象類別替換為實現必要的虛擬函數,如建議的:

class IFunnyInterface
{
public:
    virtual void IamFunny() { throw new std::exception("not implemented"); }
};

但是,這種方法可能並不可取,因為它引入了不必要的實作細節,這些細節可以在抽象基礎中避免

更符合 C語言習慣的解決方案是使用指向抽象類別的指標向量:

std::vector<IFunnyInterface*> ifVec;

這允許多態行為並防止物件切片。指向抽象類別的指標能夠儲存衍生類別的對象,使您能夠保留對每種類型的特定功能的存取。

以上是如何在 C 中使用抽象類別向量?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn