C++子类父类成员函数的覆盖和隐藏实例详解

2025-05-27 0 83

C++子类父类成员函数的覆盖和隐藏实例详解

函数的覆盖

覆盖发生的条件:

(1) 基类必须是虚函数(使用virtual 关键字来进行声明)
(2)发生覆盖的两个函数分别位于派生类和基类
(3)函数名和参数列表必须完全相同

函数的隐藏

隐藏发生的条件:

(1)子类父类的函数名相同,参数列表可以不一样

看完下面的例子就明白了

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39
#include "iostream"

using namespace std;

class CBase{

public:

virtual void xfn(int i){

cout << "Base::xfn(int i)" << endl; //1

}

void yfn(float f){

cout << "Base::yfn(float)" << endl; //2

}

void zfn(){

cout << "Base::zfn()" << endl; //3

}

};

class CDerived : public CBase{

public:

void xfn(int i){

cout << "Derived::xfn(int i)" << endl; //4

}

void yfn(int c){

cout << "Derived:yfn(int c)" << endl; //5

}

void zfn(){

cout << "Derived:zfn()" << endl; //6

}

};

void main(){

CDerived d;

CBase *pb = &d;

CDerived *pd = &d;

pb->xfn(5); //覆盖

pd->xfn(5); //直接调用

pb->yfn(3.14f); //直接调用

pd->yfn(3.14f); //隐藏

pb->zfn(); //直接调用

pd->zfn(); //隐藏

}

C++子类父类成员函数的覆盖和隐藏实例详解

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 C++子类父类成员函数的覆盖和隐藏实例详解 https://www.kuaiidc.com/73795.html

相关文章

发表评论
暂无评论