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

2021-10-09 08:28:59 字數 1743 閱讀 1261

賢哲所追求的不是享樂,而是源於痛苦的自由。

面試過程中有被問到隱藏的概念。把隱藏答成類的資訊隱藏了,今天被乙個好心的面試官指出來,這裡重新學習一下。

#include

#include

#include

using

namespace std;

/*過載:

1. 函式的可見範圍相同。不同cpp檔案的同名函式不構成過載。

2. 函式的返回值不同不是過載的判斷條件。

3. const的函式可以和非const函式構成過載。

4. virtual關鍵字限定函式可以和無virtual關鍵字限定的函式構成過載。

5. 在類中,成員函式的資訊隱藏型別是public、private、與protected對函式是否是過載沒有任何影響

6. 函式過載是函式名相同,形參列表不同(形參的個數不同,形參的型別不同,形參的個數相同但是相同位置的形參的型別不同)

7. c++根據過載的函式引數會生成不同的識別符號用於區別不同的函式,這樣才能根據形參進行準確的函式呼叫。

*/void

fun(

)class

aprivate

:void

fun(

)public

:const

bool

fun2()

bool

fun2

(const string& str=

string

("劉強"))

private

:int a;};

/*覆蓋:

覆蓋只發生在父類和子類之間。要求必須同時滿足:

1. 父類的成員函式宣告為虛函式。

2. 子類對父類虛函式的重寫必須滿足同名同參,但是可以改變重寫函式的資訊隱藏型別。

3. 覆蓋是子類重寫的函式位址覆蓋了父類虛函式表中的函式位址。覆蓋是實現多型的基礎。

*/class

father

protected:}

;class

son:

public father

public

:void

fun(

double d,

char

)override

protected:}

;/*隱藏:1. 隱藏發生在父類與子類之間。

2. 要求子類的函式名與父類的函式名相同,但是形參可以不同。

3. 如果父類加了virtual限定,則注意執行時靜態多型和動態多型是由區別的

*/class

cvirtual

void

fun2()

private

:protected:}

;class

cson

:public c

void

fun2

(int a,

int b)

/*override */

private

:protected:}

;/*資訊隱藏:

資訊隱藏是依據關鍵字public、private和protected實現的。

當父類不希望成員函式和成員變數在類外不可見,又希望子類能夠使用父類的成員函式和成員變數,那麼就將變數宣告為protected,protected是為了繼承機制才出現的。

*/int

main()

C 過載 隱藏和重寫

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

重寫 過載和隱藏

重寫 過載和隱藏是經常在開發中用到的知識點,今天我們在這裡來講一下他們三個的區別。零 重寫 所謂重寫,就是在繼承中,子類重新定義父類的方法,這裡需要注意的是 必須在有繼承關係的類中重寫 子類重寫的方法名和引數列表必須與父類的方法名和引數列表一致 父類方法用virtual修飾 子類方法用overrid...

C 中的過載 隱藏和重寫

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