第三章:函数
函数是面向对象程序设计中的基本抽象单元,是对功能的抽象。
一、函数的定义与使用
函数声明的语法形式:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D3dHmT04-1624433680907)(C:\Users\Administrator\Desktop\与欢行\学习笔记\3-1.png)]
函数需要先说明函数原型(函数声明)。
函数的递归调用:
函数直接或间接调用自身,称为递归调用。
递归过程分为递推和回归两个阶段。
函数的参数传递机制:
分请什么是形参什么是实参。
形参:形式参数,就是写在函数原型括号中的参数。
实参:实际传递的参数,就是在调用函数时为函数传递的参数。
实参类型必须与形参相符。
实参可以是常量、变量或表达式。
参数传递时是传递参数值,即单向传递。
用引用做形参:
引用可以认为是给对象取一个别名。
引用类型说明符为 &
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QL7OrAQA-1624433680908)(C:\Users\Administrator\Desktop\与欢行\学习笔记\3-2.png)]
声明一个引用型变量时,必须同时使之初始化!
即声明它代表那一个变量。并且从此不可改变。
一旦一个引用被初始化后,就不能改为指向其它对象。
引用可以作为形参。
void swap(int &a,int &b) {...}
二、内联函数:
特点:
功能简单、规模小、使用频繁的函数。
声明时需要使用关键字:inline
编译时,在调用处用函数体进行替换,节省了参数传递、控制转移等开销。
注意事项:
内联函数的声明必须出现在内联函数第一次被调用之前。*
欢欢,还记得我那一次遇到的神奇的bug嘛,就是这个问题导致的。
三、一些特殊的参数法则
带默认形参值的函数:
函数在声明时可以预先给出默认的形参值,调用时如给出实参则采用实参值,
否则采用预先给出的默认形参值。
欢欢,这就是后面我跟你说过的既是无参构造又是有参构造的构造函数的由来。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SYRFPcAS-1624433680910)(C:\Users\Administrator\Desktop\与欢行\学习笔记\3-3.png)]
缺省形参值的说明次序:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NnCslgh9-1624433680911)(C:\Users\Administrator\Desktop\与欢行\学习笔记\3-4.png)]
四、函数
这你应该还记得吧,欢欢?
所谓函数重载就是:
C++允许功能相近的函数在相同的作用域内以相同函数名声明,从而形成重载。
注意事项:
重载函数的形参必须不同:个数/类型不同。
编译器会根据最佳匹配程度进行选择调用。
加油哦,欢欢可以的!
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qBxQEddh-1624433680912)(C:\Users\Administrator\Desktop\与欢行\学习笔记\cat.jpg)]
重载函数的形参必须不同:个数/类型不同。
编译器会根据最佳匹配程度进行选择调用。
加油哦,欢欢可以的!
[外链图片转存中…(img-qBxQEddh-1624433680912)]