龙空技术网

C/C++编程笔记:无法在C++中重载的函数,六种方式

C语言编程 198

前言:

此时你们对“c语言重载”大致比较关注,各位老铁们都想要知道一些“c语言重载”的相关内容。那么小编在网上搜集了一些关于“c语言重载””的相关内容,希望咱们能喜欢,看官们快快来学习一下吧!

在C ++中,以下函数声明不能重载。

1)仅在返回类型上不同的函数声明。例如,以下程序编译失败:

#include<iostream>int foo() {return 10;}char foo() {return 'a';}int main(){char x = foo();getchar();return 0;}

2)具有相同名称和名称参数类型列表的成员函数声明,如果其中任何一个都是静态成员函数声明,则不能重载。例如,以下程序编译失败:

#include<iostream>class Test {static void fun(int i) {}void fun(int i) {}};int main(){Test t;getchar();return 0;}

3)仅在指针*与数组[]中不同的参数声明是等效的。即,将数组声明调整为指针声明。在参数类型中,只有第二维和后续数组维才有意义。例如,以下两个函数声明是等效的:

int fun(int *ptr);int fun(int ptr[]); // redeclaration of fun(int *ptr)

4)仅在一个是函数类型而另一个是指向相同函数类型的指针方面不同的参数声明是等效的。

void h(int ());void h(int (*)()); // redeclaration of h(int())

5)仅在存在和不存在const和/或volatile方面不同的参数声明是等效的。也就是说,在确定要声明,定义或调用哪个函数时,将忽略每种参数类型的const和volatile类型说明符。例如,以下程序在编译时失败,并显示错误“重新定义'int f(int)'”

例子:

#include<iostream>#include<stdio.h>using namespace std;int f ( int x) {return x+10;}int f ( const int x) {return x+10;}int main() {getchar();return 0;}

以这种方式,仅忽略参数类型说明中最外层的const和volatile类型说明符。包含在参数类型规范中的const和volatile类型说明符很重要,可用于区分重载的函数声明。

6)两个仅在默认参数方面不同的参数声明是等效的。例如,以下程序在编译时失败,并显示错误“重新定义`int f(int,int)'”

#include<iostream>#include<stdio.h>using namespace std;int f ( int x, int y) {return x+10;}int f ( int x, int y = 10) {return x+y;}int main() {getchar();return 0;}

以上就是今天的全部内容了。每日分享小知识,希望对你有帮助~

另外如果你想更好的提升你的编程能力,学好C语言C++编程!弯道超车,快人一步!笔者这里或许可以帮到你~

编程学习书籍分享:

编程学习视频分享:

分享(源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

点击下方【了解更多】获取更多免费学习资料帮助你学习成长哦~

标签: #c语言重载