详解函数重载

简介: 函数重载不管是平时学习过程中,还是校招里面都是一个重点,但是有人就学的很浅,只知道调用来调用去的,本文将对函数重载在校招过程中能够考察到的点进行详细的阐释。

do not give me the theory,show me the code!

以后的文章都主要以代码为主,然后归纳总结学习过程以及面试过程或者工作中我们所需要掌握的核心重点。

```cpp#include <iostream>usingnamespacestd;
boolcompare(inta, intb) // compare_int_int{
cout<<"compare_int_int"<<endl;
returna>b;
}
boolcompare(doublea, doubleb) // compare_double_double{
cout<<"compare_double_double"<<endl;
returna>b;
}
boolcompare(constchar*a, constchar*b) // compare_const char*_const char*{
cout<<"compare_char*_char*"<<endl;
returna>b;
}
intmain()
{
boolcompare(inta, intb); // 函数的声明compare(10, 20);
compare(10.0, 20.0); // double -> intcompare("aaa", "bbb"); // const char* -> intreturn0;
}
```

通过以上代码,总结一下函数重载所能涉及到的五个点:

1.C++为什么支持函数重载?C语言为什么不支持函数重载?

C++代码产生函数符号的时候,函数名+参数列表类型组成的!

C代码产生函数符号的时候,函数名来决定!

2.函数重载需要注意一些什么?

  • 一组函数,其中函数名相同,参数列表的个数或者类型不同,那么这一组函数称为函数重载。
  • 一组函数要称得上重载,一定是要处在同一个作用域当中的。
  • const或者volatile的时候,是怎么影响形参类型的(以后细讲)?
  • 一组函数,函数名相同,参数列表也相同,仅仅是返回值不同,不叫重载。
  • 面试官让你解释函数重载:

同一个作用域下,函数名相同,参数列表不同的这样一组函数称为一组重载函数。

3.多态(以后细讲)

静态多态(编译期)(为什么是编译期:因为压栈,初始化栈指令等需要在编译期就确定好。):重载、模板

动态多态(运行期):重写

4.C++和C语言代码之间如何调用?

C -> C++ 把C++函数的定义括在extern "C"里面。

C++ -> C 把C函数的声明括在extern "C"里面。

5.介绍一下宏定义

image.png

如果在C++编译期中,就extern “C”,否则就不extern "C",这样对于代码编译成函数符号的时候就更加灵活。

相关文章
|
6月前
|
Linux C语言 C++
C++之函数重载【详解】
C++之函数重载【详解】
|
11月前
|
编译器 Linux C语言
【C++】缺省参数与函数重载
【C++】缺省参数与函数重载
72 0
|
29天前
|
编译器
函数重载和重载函数有什么区别
【10月更文挑战第19天】函数重载和重载函数有什么区别
31 2
|
29天前
|
编译器 程序员 C++
C++中的函数重载是什么
【10月更文挑战第19天】C++中的函数重载是什么
24 0
|
3月前
|
编译器 程序员 C语言
C++函数重载
在实际开发中,有时候我们需要实现几个功能类似的函数,只是有些细节不同。例如希望交换两个变量的值,这两个变量有多种类型,可以是 int、float、char、bool 等,我们需要通过参数把变量的地址传入函数内部。在C语言中,程序员往往需要分别设计出三个不同名的函数,其函数原型与下面类似: void swap1(int *a, int *b); //交换 int 变量的值 void swap2(float *a, float *b); //交换 float 变量的值 void swap3(char *a, char *b); //交换 char 变量的
C++函数重载
|
5月前
|
C++
C++中的函数重载
C++的运算符重载允许改变运算符行为,使其能应用于自定义类型。重载函数可为类成员或全局函数,需匹配运算符原本的参数和返回类型。示例展示了如何重载`+`和`&lt;&lt;`运算符。此外,友元函数能访问类的私有成员,增加代码灵活性。继承是OOP的关键特性,如单一继承(类B直接继承类A)和多级继承(类D继承类C,类C继承类B)。多态通过虚函数实现,允许基类指针调用派生类的方法,如`Animal`的`makeSound()`在`Cat`和`Dog`中的不同实现。
29 0
|
6月前
|
编译器 C++
C++函数重载详解
C++函数重载详解
79 1
|
6月前
|
编译器 Linux 开发工具
函数重载你真的了解吗?
函数重载你真的了解吗?
|
6月前
|
编译器 C语言 C++
【C++】函数重载
【C++】函数重载
42 2
|
6月前
|
编译器 Linux C语言
【c++】函数重载
【c++】函数重载
【c++】函数重载