純虛函數:實作與目的
在C 中,純虛函數通常與宣告方法的介面而不提供其實作相關聯。但是,可以有一個帶有實現的純虛函數,如下所示:
class A { public: virtual void f() = 0; }; void A::f() { cout << "Test" << endl; }
雖然此程式碼在語法上是有效的,但其目的和用法需要進一步解釋。
提供純虛函數實作的目的:
基底類別可以定義純虛函數的實作函數,即使衍生類別需要提供它們自己的實作。此實作的目的可以是:
如何呼叫基底類別實作:
衍生類別可以使用全範圍呼叫純虛函數的基底類別實作名稱:
class B : public A { virtual void f() { // class B doesn't have anything special to do for f() // so we'll call A's // note that A's declaration of f() would have to be public // or protected to avoid a compile time problem A::f(); } };
用例:
考慮一個方法有合理的預設行為的場景。然而,類別設計者希望僅明確調用此預設行為。在基底類別中提供純虛函數的實作允許衍生類別根據需要存取和使用此預設行為。
注意:
雖然技術上可以提供純虛函數的實現,這是一種不常見的做法,並且可能會導致混亂。因此,除非有明確且正當的理由,否則一般建議避免這樣做。
以上是C 中的純虛擬函數可以實現嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!