再谈C++函数
1:引用
2:默认参数
3:函数重载
4:函数模板
————————————————————————————————————————————————————————————————
1:引用
引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。
表示给变量起一个别名,二者共享相同的内存区域。类似同一个人具有不同的名字。
引用作为函数参数
1. 为了在函数内部可以修改实参。
2. 大型的结构体或对象作为函数参数时,为避免拷贝我们一般采用指针或引用传递参数。
引用作为函数返回值
返回函数值,定义函数时需要在函数名前加&:具体的是在函数类型和函数名之间加上&即可
返回引用类型的好处是不产副本,不需要拷贝。因为拷贝需要消耗大量的资源。
注意:不能返回局部变量的引用。原因是局部变量会在函数返回后被销毁
对引用的一些总结
(1)在引用的使用中,单纯给某个变量取个别名是毫无意义的,引用的目的主要用于在函数参数传递中,解决大块数据或对象的传递效率和空间不如意的问题。
(2)用引用传递函数的参数,能保证参数传递中不产生副本,提高传递的效率,且通过const的使用,保证了引用传递的安全性。
(3)引用与指针的区别是,指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。
参考代码:
————————————————————————————————————————————————————————————————
(2)默认参数
函数的默认参数值,即在定义参数的时候同时给它一个默认的初始值。在调用函数的时候,我们可以省略含有默认值的参数。也就是说,如果用户指定了参数值,则使用用户指定的值,否则使用默认参数的值。
默认参数的语法与使用:
(1)在函数声明或定义时,给参数赋一个默认的值。
(2)在函数调用时,省略具有 默认值的参数。这时可以用默认参数来代替。
如果一个参数设定了缺省值,其右边的参数都要有缺省值。
可以在函数声明或函数定义中指定默认形参,但只能指定一个地方,不能在两个地方同时指定
}
————————————————————————————————————————————————————————————————
(3)函数重载
函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。
重载函数通常用来命名一组功能相似的函数,这样做减少了函数名的数量,避免了名字空间的污染,对于程序的可读性有很大的好处。
需要注意的是:如果两个函数参数列表相同,仅仅是返回值不同,这不是重载,编译器在编译的时候会报错。
10 + 20
10.3 + 20.3
————————————————————————————————————————————————————————————————
(4)函数模板
所谓函数模板,实际上是创建一个通用函数,其函数返回值类型和形参类型不具体指定,用一个虚拟的类型来代替。这个通用函数就称为函数模板。
函数模板的实例化
函数模板的定义形式是:
template <typename T>:其中template和typename都是关键字,保持不变,可变的只能是T
函数实现
与函数重载的比较
模板函数与函数重载有些类似,但不同之处也很明显。
重载函数内部实现可以完全不同,但模板函数内部算法相同。