【C/C++】高亮C++中函数的重写——函数名相同?参数列表相同?返回值相同?
2024-09-04 13:01:16
C++的重载给人留下了非常深刻的影响,原因是重载的条件很值得注意:函数名相同,参数列表不相同的两个函数构成重载函数,而无关乎二者的返回值。
但是C++中的函数重写又是另一码事。标准规定:只要函数名相同,就会被重写。重写之后用子类访问“本该被继承的”父类的函数,将会调用子类的同名函数,而与父类中有什么样的同名函数无关(也就是当它不存在)。例如:
#include <iostream>
using namespace std; class A
{
public:
int func()
{
return ;
}
}; class B: public A
{
public:
char func(int a)
{
return '';
}
}; main()
{
B b;
cout <<b.func()<<endl;
cout <<b.func()<<endl;
}
上面这段代码中,main函数中的b.func(1)将成功被调用,而b.func()将报错:
Untitled1.cpp||error: no matching function for call to 'B::func()'|
因为此时从父类那里集成而来的int func()已然被重写,即使参数列表不同,即使返回值也不同。int func()在子类B中早已不复存在了。
最新文章
- JAVA类的静态加载和动态加载以及NoClassDefFoundError和ClassNotFoundException
- 剑指offer-二叉树的深度
- 在Windows下编译扩展OpenCV 3.1.0 + opencv_contrib
- java 深度探险 java 泛型
- WINDOWS黑客基础(3):注入代码
- easily add files to META-INF in NetBeans
- 看懂SqlServer查询计划
- YUM配置
- android app启动过程(转)
- 【超级干货】手机移动端WEB资源整合:转载
- Redis系列一(Redis环境的搭建)
- SQL_CALC_FOUND_ROWS equivalent in PostgreSQL
- [Jave - JDBC] executeUpdate &; executeQuery &; execute
- UNIX高级环境编程(14)文件IO - O_DIRECT和O_SYNC详解 <; 海棠花溪 >;
- 一个第三方Dart库导致的编译错误!
- springboot maven 部署
- 步步为营-63-Asp.net-get与post
- css3背景颜色渐变属性 兼容性测试基础环境为:windows系统;IE6.0+, Firefox4.0+, Chrome4.0+, Safari4.0+, Opera15.0+
- 阿里面试的一点感受 阿里ali片式经历和面试题
- aaronyang的百度地图API之LBS云 笔记[位置数据 geotable]