賢哲所追求的不是享樂,而是源於痛苦的自由。面試過程中有被問到隱藏的概念。把隱藏答成類的資訊隱藏了,今天被乙個好心的面試官指出來,這裡重新學習一下。
#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 派生類的函式與...