服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - 详解C++函数类型与重载函数

详解C++函数类型与重载函数

2022-02-28 14:43shxaz C/C++

这篇文章主要为大家介绍了C++函数类型与重载函数,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

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

延伸 · 阅读

精彩推荐