刚学习C++,入门阶段对重载 缺省 命名空间的理解
(这只是在下的粗浅理解,不足的地方还请谅解,欢迎留言提出,后期理解深入后会加以改进)
C几乎是C++的一个子集,所以C语言支持的语法在C++基本都支持并需要使 用。
C plus plus(C++),所以在C的基础上又有了很多新的特性
重载:
下面看两组函数,分别是用C和C++写的打印函数,分别打印 int 型、char 型、string 型
C要完成不同类型的打印就要写三个不同函数名的函数才能完成
C++不会存在这方面的问题,只要函数的参数列表不同,同样函数名的函数依然能完成打印
参数列表(图中黄色框起来的地方)又叫参数签名,包括参数的类型、参数的个数和参数的顺序,只要有一个不同就叫做参数列表不同。
这就是函数重载,而借助重载,同一个函数就可以完成多种不同的作用
注意,参数列表不同包括参数的个数不同、类型不同或顺序不同,仅仅参数名称不同是不可以的。函数返回值也不能作为重载的依据。
参数列表不一定非是类型不同才可以,个数、位置不同都可以形成重载
函数的重载的规则:
- 函数名称必须相同。
- 参数列表必须不同(个数不同、类型不同、参数排列顺序不同等)。
- 函数的返回类型可以相同也可以不相同。
- 仅仅返回类型不同不足以成为函数的重载。
重载是如何形成的呢,这就取决于C++的命名规则了:
在C语言中编译时,给每个函数都起一个名字放在一个表中,起名的规则简单,好比func()就叫_func,命名重复就会报错。
而C++中的命名还需要考虑参数,比如func(int a, int b)就叫_funcii,而func(int a, int b, int c)就叫_funciii;这样就避免了重复可以根据用户的传参区分需要调用的函数。