C++派生类中与基类同名函数的调用问题
来源:互联网 发布:华为交换机查mac ip 编辑:程序博客网 时间:2024/05/16 19:07
本文所探讨的问题建立在公共继承的公有函数的基础上。
一、派生类,即子类中的函数与基类的函数的情况有以下三种。
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)
- C++派生类中与基类同名函数的调用问题
- overwrite 对基类同名重载函数在派生类中可见性的影响
- 基类与派生类的构造函数调用问题
- C++中基类和派生类同名函数及继承体系中虚函数
- [C++] 关于子类声明与父类同名同类型的成员变量的问题
- C++ 调用父类同名函数
- 关于派生类构造函数与基类构造函数的调用顺序问题
- 关于派生类构造函数与基类构造函数的调用顺序问题
- 关于派生类构造函数与基类构造函数的调用顺序问题
- 关于派生类构造函数与基类构造函数的调用顺序问题
- 怎样访问被子类同名覆盖(overwrite)的基类函数?
- 在派生类中调用基类构造函数的问题
- C++基类与派生类的函数调用情况
- C++基类与派生类的函数调用情况
- 派生类中调用基类的构造函数
- C++子类不能调用父类同名不同参函数
- java基础------>继承--->属性(在子类中调用父类同名属性的两种方式)
- 调用父类同名方法
- Service启动流程
- Android学习 (六) 常见布局之线性布局
- ACM易错地方之一
- UITextView长按弹出UIMenuController,剪切拷贝选择全选粘贴删除
- 读书笔记(5) python
- C++派生类中与基类同名函数的调用问题
- 17. Letter Combinations of a Phone Number
- 15 个 Android 通用流行框架大全(归类)
- 单链表的基本运算
- ~~~初学者之div+css简介~~~
- 【11月11日 】排序算法续--快速排序+彩蛋一
- DB2 system table resource
- gcc的三级优化
- web安全书籍整理