【C/C++】高亮C++中函数的重写——函数名相同?参数列表相同?返回值相同?

2023-06-05,,

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中早已不复存在了。

【C/C++】高亮C++中函数的重写——函数名相同?参数列表相同?返回值相同?的相关教程结束。

《【C/C++】高亮C++中函数的重写——函数名相同?参数列表相同?返回值相同?.doc》

下载本文的Word格式文档,以方便收藏与打印。