C++ 11 :override 關鍵字的使用


override 關鍵字

作用:在成員函數聲明或定義中, override 確保該函數為虛函數並覆寫來自基類的虛函數。

位置:函數調用運算符之后,函數體或純虛函數標識 “= 0” 之前。

使用以后有以下好處:

1.可以當注釋用,方便閱讀

2.告訴閱讀你代碼的人,這是方法的復寫

3.編譯器可以給你驗證 override 對應的方法名是否是你父類中所有的,如果沒有則報錯.

override 使用舉例

如果你想重寫父類的方法,比如toString()方法:

#if 1
public :
virtual String toString() override {
	//...
}
#else
public :
virtual String toString() override=0;
#endif

正確的是:

public :
String toString() override {
	//...
}

假如不小心把方法名寫錯了而沒寫 override ,這時編譯器是可以編譯通過的,因為編譯器以為這個方法是你的子類中自己增加的方法。如:

// 注意這里的小寫方法,實際上是錯誤的。
public :
String tostring() {
    //...
}

相反,如果你很機智,在知道自己要重寫父類的方法,加上了 override 標簽后,編譯器會檢查出重寫方法錯誤,會保證你重寫父類方法的正確性。

例子

#include<iostream>
using namespace std;

class base
{
public:
    virtual void fun1(void)=0;
};

class derived : public base
{
public:
#if 1 //OK
    void fun1(void) override {
        cout << "a fun1" << std::endl;
    }
#else // err
    void fun2(void) override {
        cout << "a fun1" << std::endl;
    }
#endif

private:
    /* data */
};

int main(int argc, char *argv[])
{
    derived test;
    test.fun1();
    return 0;
}

總結:在重寫方法時,最好加上這個 override 這個關鍵字 以 加強代碼規范。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM