繼承 名字隱藏

2021-06-09 21:29:35 字數 1216 閱讀 4597

#include using namespace std;

//peasant繼承自human,human繼承自cre

//基類,生物類

class cre

//析構函式

~cre()

//成員函式:

int gethp()

void sethp(int hp)

int getdef()

int getact()

void move()

void attack()

};class human : public cre

//析構函式

~human()

//成員函式

//};

class peasant : public human

//析構函式

~peasant()

//成員函式

//名字隱藏,函式名和父類的相同。只要函式名相同就會隱藏,不管乙個是不是有參另乙個是不是無參。那返回值又關麼?別問,自己試一試。

void move()

//名字隱藏

void attack(string name)

//名字隱藏

void work()

};int main()

/* 一次執行結果

cre(i,i,i),0x7fffe8703670

human(), 0x7fffe8703670

cre is moving

cre is attacking

100**********

cre(i,i,i),0x7fffe8703660

human(), 0x7fffe8703660

work work ...0x7fffe8703660

peasant move

peasant attackedmk

cre is attacking

mork work

cre is moving

**********

oh,i'll dead.0x7fffe8703660

~human(), 0x7fffe8703660

~cre(), 0x7fffe8703660

~human(), 0x7fffe8703670

~cre(), 0x7fffe8703670

*/

C 之名字隱藏

在c 中,當你使用乙個包含了過載方法的類時,並且當你繼承和重寫這個方法後,你必須重寫所有過載的方法。例子 class firstclass void firstclass methoda int i void firstclass methoda int i,int j 這個簡單類有兩個方法 乙個過...

名字隱藏與過載

一.繼承不會改變作用域 繼承不會改變類成員的作用域,基類的成員永遠都是基類的成員,並不會因為繼承而變成子類的成員 class human class student public human 一.隱藏不是過載 因為作用域的不同,分別在子類和基類中定義的同名成員函式 包括靜態成員函式 並不構成過載關係...

對C 名字隱藏的理解

overwrite 重寫 是指派生類的函式遮蔽了與其同名的基類函式,規則如下 1 如果派生類的函式與基類的函式同名,但是引數不同。此時,不論有無virtual關鍵字,基類的函式將被隱藏 注意別與過載混淆 如何理解這句呢?看這個例子 class firstclass void firstclass m...