c++中override的应用
生活随笔
收集整理的這篇文章主要介紹了
c++中override的应用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?override是C++11中的一個繼承控制保留字,放在派生類成員函數參數列表后面,用來修飾函數。派生類中被override修飾的函數,在父類中有一個與之對應(形參、函數名、返回值都一致)的虛函數,override表示要重寫父類的虛函數,一旦函數后面加了override,編譯器就會檢查父類中是否有和子類中簽名匹配的函數,如果沒有編譯器會報錯。
示例代碼:
#include "stdafx.h"#include <iostream>
using namespace std;
class Parent?
{
public:
virtual void Func();
void Func_B();
virtual void Func_C() final{ }
};
void Parent::Func()
{
cout<<"call the function of Parent"<<endl;
}
class Child ?: public Parent?
{
public:
void Func() override;//基類聲明的虛函數,在派生類中也是虛函數,即使不再使用virtual關鍵字
/*************************************************************************
void Func_A() override;
父類中沒有此方法,添加override編譯會報如下錯錯誤:
error C3668: “Child::Func_A”: 包含重寫說明符“override”的方法沒有重寫任何基類方法
*************************************************************************/
/*************************************************************************
void Func_B() override { }
Func_B在父類中不是虛函數,添加override編譯會報如下錯錯誤:
error C3668: “Child::Func_B”: 包含重寫說明符“override”的方法沒有重寫任何基類方法
*************************************************************************/
/*
void Func_C() override { }
Func_C在父類中被final修飾,禁止在派生類中被重寫
error: Func_C在基類中聲明禁止重寫?
*/
};
void Child::Func()
{
cout<<"implement the function of Parent"<<endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
Parent objParent;
Child objChild;
return 0;
}
總結
以上是生活随笔為你收集整理的c++中override的应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 好玩gan_效果超赞服务器挤爆!用GAN
- 下一篇: C++中了类继承和调用父类的构造函数方法