1.首先对重载函数,明确函数的返回类型不能决定重载函数的类别,即
1
2
3
|
int F( int , int ) ; //一个返回 int 类型的函数 void F( int , int ); //一个无返回值的函数 //两者形参列表相同,返回值类型不同,但两者不构成重载函数 |
2.注意形参列表中的默认值,使用含默认参数的重载函数时可能会产生二义性。例:
1
2
3
4
5
|
int a = 0; int Max( int , int ); int Max( int , int , int = 0); //则对Max(3,5)的调用会报错 a = Max(3,5); //错误 |
另外,对默认参数,应该在函数名第一次给出的时候指定,通常在函数原型中。若已在函数原型中指定默认参数,则函数定义时不能重复给出。
问题:
在一道题中我看到了这样一个问题,简述起来就是让你调用一个值传递的重载函数和一个引用传递的重载函数,
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#include<iostream> using namespace std; void F( int &a, int &b) { a = a + b; cout << a<<endl; } int F( int a, int b,) { return a + b; } int main(){ cout<<F(a,b); F(a,b); } |
此时调用两个F函数就会报错,那如何改变函数类型来避免函数调用不明确呢?
我是这样做的,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#include<iostream> using namespace std; void F( int &a, int &b) { a = a + b; cout << a<<endl; } int F( int a, int b, int c) { return a + b; } int main(){ int a = 10; int b = 20; cout << F(a, b,1)<<endl; F(a,b); } |
即通过一个无用变量来避免类型相似。
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注服务器之家的更多内容!
原文链接:https://blog.csdn.net/m0_60178502/article/details/121411951