簡體   English   中英

C ++頭文件和以“= 0”結尾的函數聲明

[英]C++ header file and function declaration ending in “= 0”

我在.h文件中有以下代碼,我不確定賦值語句的作用是什么以及如何正確調用它?

virtual void yield() = 0;

我認為該函數默認返回值為0,但由於此函數返回void,我有點困惑。 任何人都可以對此發表評論並且可能會說我怎么能參考這個賦值,我的意思是如何用C ++術語來調用它?

謝謝。

這是一個純虛函數。 這意味着,子類必須實現此函數,否則它們是抽象的,這意味着您無法創建該類的對象。

class ISomeInterface {
public:
    virtual std::string ToString( ) = 0;
}

class SomeInterfaceImpl : public ISomeInterface {
public:
    virtual std::string ToString( ) {
        return "SomeInterfaceImpl";
    }
}

這個想法是,一個類可以暴露某個方法,但是子類必須實現它。 在此示例中, ISomeInterface公開了一個ToString方法,但沒有合理的默認實現,因此它使該方法純虛擬。 然后像SomeInterfaceImpl這樣的子類可以提供適合的實現。

= 0語法聲明了一個純虛函數 ,它與返回值無關。

如果一個類包含至少一個純虛函數,則使該類為“抽象”,這意味着它無法實例化。

實際上,這些類需要通過子類化和實現虛函數來具體化。

如果是一個純粹的虛擬方法(又名抽象),請看這里或谷歌http://www.artima.com/cppsource/pure_virtual.html

= 0並不意味着默認返回值,它是通知功能是純虛擬的

語法模糊,但“= 0”表示該方法是純虛函數。 它使類抽象(你不能實例化它),它的實現留給派生類。

當您要定義的所有內容都是接口時使用。 如果要定義接口,請使用virtual關鍵字,並提供默認實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM