C 填坑的重寫,過載和隱藏的詳解

2022-09-24 13:03:11 字數 1139 閱讀 4523

目錄

#include

using std::cout;

using std::endl;

class base

; ~base(){};

virtual void fun()

};class derived : public base

; ~derived(){};

void funrmkobmf() override ;

};int main()

輸出為:

derived class

base class

重寫的注意點:

程式設計客棧

協變返回型別:在c++中,只要原來的返回型別是指向類的指標或引用,新的返回型別是指向派生類的指標或引用,覆蓋的方法就可以改變返回型別。這樣的型別稱為協變返回型別(covariant returns type).

通俗的來講,原本重寫需要保證虛函式的返回型別相同,但是如果返回的型別時指標或者是引用,在保證該指標或者引用是具有繼承關係的情況下,重寫的虛函式可以返回子類的指標或者是引用,例如:

class base

; ~base(){};

virtual void fun()

virtual base* fun2() ;

};class derived : public base

; ~derived(){};

void fun() override ;

derived* fun2() override ;

};派生類重寫了基類的fun2函式,基類返回基類指標,派生類返回派生類指標。

int test();

int test(int a);

int test(int a,double b);

int test(double a,int a);

int test(string s);

需要注意的點:

隱藏比較簡單粗暴,只要滿足在不同的作用域中,且名稱相同即可發生隱藏,例如類中成員函式隱藏全域性函式,派生類的成員函式隱藏基類成員函式。重寫是一種特殊的隱藏,重寫是動態多型的一種體現,會影響到虛表,虛指標等編譯和執行時行為。

需要注意的點:

本文標題: c++填坑的重寫,過載和隱藏的詳解

本文位址:

C 的隱藏 重寫 過載和資訊隱藏

賢哲所追求的不是享樂,而是源於痛苦的自由。面試過程中有被問到隱藏的概念。把隱藏答成類的資訊隱藏了,今天被乙個好心的面試官指出來,這裡重新學習一下。include include include using namespace std 過載 1.函式的可見範圍相同。不同cpp檔案的同名函式不構成過載。...

C 過載 隱藏和重寫

1.什麼是過載呢?過載 同乙個作用域,相同函式名,引數列表不同,與返回值是否相同沒有關係,過載又稱靜態多型 過載的作用 減輕程式設計師對函式名的記憶負擔,可讓所有功能相同的函式使用同乙個名字。引數列表不同可表現在 1 引數個數方面 例如 int add int i,int j int add int...

C 中的過載 隱藏和重寫

本博參考了 同乙個類裡面,函式名和返回值型別相同,函式的引數型別或引數的個數不同。class a 只要派生類的函式和基類的函式重名,不管引數列表是否相同,基類函式都會被隱藏。class a class b public a int main a 基類的函式有virtue關鍵字修飾 b 派生類的函式與...