C++ 中的 override 關鍵字


函式重寫是 C++ 中最常見的特性。函式重寫基本意味著重新定義基類中的函式,同時也在派生類中定義。因此,函式簽名相同,但行為將不同。

但在重寫該函式時,程式設計師可能會出現錯誤。例如,如果簽名不相同,它將被視為另一個函式,而不是重寫的方法或該函式。在這種情況下,我們可以使用 override 關鍵字。此關鍵字在 C+ +11 中引入。當編譯器找到此類關鍵字時,它會理解這是同一類的重寫版本。

我們來看一個示例來理解這個概念。

示例

#include <iostream>
using namespace std;
class BaseClass{
   public:
      virtual void display() {
         cout << "Displaying from Base Class\n";
      }
};
class DerivedClass : public BaseClass{
   public:
      void display() {
         cout << "Displaying from Derived Class\n";
      }
};
main() {
   BaseClass *b_ptr;
   b_ptr = new DerivedClass();
   b_ptr->display();
}

輸出

Displaying from Derived Class

在這種情況下,由於簽名相同,程式執行良好。在下面的示例中,簽名將不同。對於 override 關鍵字,它將生成錯誤。

示例

#include <iostream>
using namespace std;
class BaseClass{
   public:
      virtual void display() {
         cout << "Displaying from Base Class\n";
      }
};
class DerivedClass : public BaseClass{
   public:
      void display(int x) override{
         cout << "Displaying from Derived Class\n";
      }
};
main() {
   BaseClass *b_ptr;
   b_ptr = new DerivedClass();
   b_ptr->display();
}

輸出

[Error] 'void DerivedClass::display(int)' marked override, but does not override

在本例中,程式可以正常工作,因為簽名相同。在以下示例中,簽名將不同。對於 override 關鍵字,它將生成錯誤。

更新於: 2019-07-30

4K+ 次瀏覽

開啟您的 職業生涯

完成課程即可獲得認證

開始
廣告