C++笔记一:函数

                          再谈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
函数实现
 
与函数重载的比较
模板函数与函数重载有些类似,但不同之处也很明显。
重载函数内部实现可以完全不同,但模板函数内部算法相同

时间: 2024-10-10 16:04:57

C++笔记一:函数的相关文章

Javascript读书笔记:函数定义和函数调用

定义函数 使用function关键字来定义函数,分为两种形式: 声明式函数定义: function add(m,n) { alert(m+n); } 这种方式等同于构造一个Function类的实例的方式: var add = new Function("m", "n", "alert(m+n);"); Function类构造方法的最后一个参数为函数体:"alert(m+n);",前面的都是函数的形参,参数必须是字符串形式的:&

MySQL学习笔记-自定义函数

MySQL学习笔记-自定义函数 1.自定义函数简介 自定义函数:用户自定义函数(user-defined function,UDF)是一种对MySQL扩展的途径,其用法与内置函数相同 自定义函数的两个必要条件:(1)参数  (2)返回值 自定义函数: 创建自定义函数 CREATE FUNCTION function_name RETURNS {STRING|INTEGER|REAL|DECIMAL} routine_body 关于函数体: 1.函数体可以由合法的SQL语句构成: 2.函数体可以是

python学习笔记之函数总结--高阶函数以及装饰器

python学习笔记之函数总结--高阶函数以及装饰器 Python特点: 1.不是纯函数式编程(允许变量存在): 2.支持高阶函数(可以传入函数作为变量): 3.支持闭包(可以返回函数): 4.有限度的支持匿名函数: 高阶函数: 1.变量可以指向函数: 2.函数的参数可以接收变量: 3.一个函数可以接收另一个函数作为参数: 下面我将示例一些函数的写法以及使用,并说明python中函数的特性: 1.基本的高阶函数示例: #!/usr/bin/env python def func():      

0722-----C++Primer听课笔记----------虚函数和模板

1.虚指针和虚函数表 1.1 不含有任何数据成员或者虚函数的class或者struct大小为1,含有虚函数的对象在基地址部分有一个vptr,指向虚函数表,因此大小为4个字节. 1.2 动态绑定的原理:假设派生类和基类存在覆盖的关系(基类中定义了虚函数),那么派生类在虚函数表中,会覆盖掉基类相应的虚函数.当程序执行的时候,根据基类指针找到vptr,根据vptr找到vtable,然后找到相应的版本去执行.所以执行的是覆盖的版本,而具体被哪个版本覆盖是由具体的对象类型所决定的,所以才实现了根据对象的具

C和指针 学习笔记-4.函数

参数传递: 参数传递采用按值传递 ADT&黑盒 ADT:abstract data type,抽象数据类型 c可以用于设计与实现抽象数据类型,因为它可以限制函数和数据定义的作用域,这种技巧也称为黑盒设计 user.h #define MAXLEN 3 struct UserClz { char *name; char *phone; char *address; }; typedef struct UserClz User; /* *接函数 *通地名称查找地址 */ char const * l

day8_python学习笔记_chapter11_函数

1. 返回对象的数目   python实际返回的对象 0 -> None ; 1 -> object ; >1 -> tuple 2. 内部/内嵌函数:如果内部函数的定义包含了再外部函数里定义的对象的引用, 内部函数会变成被称为闭包的特别之物. 3. 装饰器 day8_python学习笔记_chapter11_函数,布布扣,bubuko.com

C#&amp;java重学笔记(函数)

C#部分  1.写在函数定义的()中的关键字: a.params关键字:用来满足函数的参数为数组时,而数组的长度不固定的情况.且该关键字只能用来修饰数组型参数.这样一修饰,就达成了类似JavaScript函数书写参数的特点. b.ref关键字:让参数按引用传递,类似于C中的传指针参数.比如经典的数值交换函数,你传形参和传指针的结果应该知道,加了ref关键字就相当于传指针.注意:ref只接收变量做参数,你字面量怎么弄指针?而且该变量必须初始化!     c.out关键字:功能和ref一样,区别在于

lua学习笔记之函数

Lua学习笔记之函数 1.  函数的作用 函数主要完成指定的任务,这样的情况下函数作为调用语句使用,函数可以计算并返回值,这样的情况下函数作为赋值语句的表达式使用. 语法: funcationfunc_name(arguments-list) Statements-list end 调用函数的时候,如果参数列表为空,必须使用()表示是函数调用. Print(8*9,9/8) a = math.sin(3) +math.cos(10) print(os.date()) 上述规则有一个例外,当函数只

标C编程笔记day05 函数声明、文件读写、联合类型、枚举类型

函数声明: 1.隐式声明:在没有声明的情况下,系统可根据参数类型判断去调用函数(有可能出错) 2.显式声明:声明在被调用之前,如:double add(double,double);  函数声明参数可只写类型,不需要写函数体. 文件操作: fopen  --打开文件,FILE *pFile=fopen("a.txt","w"); fopen的打开模式: r:只能读,要求文件存在 r+:可读可写,要求文件存在 w:只能写,创建文件,如果文件存在则先删除旧文件 w+:可

mysql笔记4_函数

常用函数: concat 连接函数  Lower 转小写  upper 转大写  Length 长度 substr  子串  now 当前时间  Year 当前年份... 流程函数: ifnull(column,result1,result2) 判定字段为空则返回result2,不为空则result1. case...when...then...else...end 分支语句. 聚合函数: AVG 平均值  sum 求和  MAX 最大值  MIN 最小值  count[distinct] 统计