类继承时函数掩盖盖问题
来源:互联网 发布:fliqlo mac 怎么安装 编辑:程序博客网 时间:2024/04/29 03:09
正常情况下我们可以通过使用相同的函数名而不同的参数或者返回值类型等因素来实现函数重载。但是在类的继承时这样的情况无法实现,因为类继承时,同名函数将会被掩盖,只要同名不管函数参数和返回值等类型是否相同都会被掩盖掉。如下进行简单的测试就可以很清楚的了解这一特性了。
1.正常情况下的函数重载:
#include <cstdio>#include <cstring>#include <iostream>using namespace std;void bar(int c){cout << "In function : void bar(int c) : c = " << c << endl;}void bar(){cout << "In function : void bar()" << endl;}int main(){int c = 2;bar(c);bar();return 0;}以上代码就是一个最简单的重载代码。
2.在类的继承关系中的情况
#include <cstdio>#include <cstring>#include <iostream>using namespace std;namespace iaccepted{class A{public:void bar(int c){cout << "In function : void bar(int c) : c = " << c << endl;}};class B : public A{public:void bar(){cout << "In funcion : void bar()" << endl;}};}int main(){int c = 2;iaccepted::B b;b.bar();b.bar(c);//错误,b中没有已int为参数的bar函数可供调用return 0;}
这就是在类的继承关系中类似的情形。A中有一个bar(int)类型的函数,B中有一个bar()类型的函数,其实类B虽然继承类A中的内容,但是由于B中的bar与A中的函数同名,不管参数或者返回值是否相同,B中的bar都会掩盖掉A中的所有名为bar的函数(如果不止存在一个的话)。
结论:
类的继承关系中派生类中的函数会掩盖基类中的同名函数,而不管这些函数的参数和返回值类型等其他因素。
本人新的博客地址 凌风技术站
0 0
- 类继承时函数掩盖盖问题
- 类继承时函数掩盖盖问题
- [C++]关于C++中继承、重载、掩盖
- [C++]关于C++中继承、重载、掩盖
- 关于C++中继承、重载、掩盖
- [C++]关于C++中继承、重载、掩盖
- 记一个链接库导出函数被覆盖的问题
- 记一个链接库导出函数被覆盖的问题
- python类继承时构造函数的执行问题
- NOKIA盖大楼问题
- 盖游戏板问题
- C++继承、虚继承、虚函数类的大小问题
- C++继承、虚继承、虚函数类的大小问题
- C++继承、虚继承、虚函数类的大小问题
- C++继承、虚继承、虚函数类的大小问题
- C++继承、虚继承、虚函数类的大小问题
- C++继承、虚继承、虚函数类的大小问题
- C++继承、虚继承、虚函数类的大小问题
- 读书笔记一,openlayer创建地图
- PHP配置文件详解php.ini
- TCP与UDP的区别
- 【Oracle脚本】检查Oracle数据库的DX锁
- 设计模式之策略模式
- 类继承时函数掩盖盖问题
- servlet过滤器
- 论文笔记:CNN: Single-label to Multi-label
- C++学习笔记之覆盖、重载、多态的区别
- 质因数分解(给定一个整数,求该数的所有质因数)
- 手机电池的保护电路详细介绍
- Unix/Linux操作系统:孤儿进程与僵尸进程[总结]
- C++运算符重载的妙用
- leetcode Edit Distance