转载 https://blog.csdn.net/qq_32243677/article/details/53134446
一、派生类,即子类中的函数与基类的函数的情况有以下三种。
1、不是同名函数
2、函数名相同,形参的个数或类型不同。
3、函数名相同,形参的个数和类型也相同。
二、接下来就这三种情况探讨子类调用基类函数的问题
1、在一般情况下,子类中的函数与基类的函数不是同名函数,此时,可以直接通过子类对象调用基类的函数。
例: 基类CBase 基类函数 print ( int a)
子类CDeprive 子类函数 deprint ( float b) 子类对象 deprive //声明CDeprive deprive;
可以通过子类对象直接调用基类的函数 deprive.print ( int a);
2、当子类中的函数与基类的函数,函数名相同,形参的个数或类型不同时,不能直接用子类对象调用(直接调用编译也会提示错误)。
此时要从子类中访问基类的函数有两种方法:
1、定义基类指针,让基类指针指向派生类对象,用指针调用基类函数。
2、显示调用基类函数,既在基类函数之前加上基类名和域说明符。
例: 基类函数 print ( int a) 基类指针 pt CBase * pt;
子类函数 print ( float b) 子类对象 deprive
使基类指针指向子类 pt=&deprive;
通过基类指针调用基类函数 pt->print(c); c为自定义的int实参。
显示调用基类函数 deprive.CBase::print(c);
3、子类中存在和基类中同名同参的函数,这时候基类的函数会被子类的函数覆盖,直接用子类对象调用同名函数会默认调用子类的函数。
此时要从子类中访问基类的函数有也是有两种方法,与第二种情况方法相同,不再赘述。
同名同参函数举例
基类函数print ( int a)
子类函数print ( int b)
————————————————
版权声明:本文为CSDN博主「万事求心」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_32243677/article/details/53134446