<c++primer plus>学习笔记1之第八章函数探幽
1 c++内联函数
编译器将使用相应的函数代码替换函数调用,对于内联代码,函数无需跳到另一个位置执行代码再跳回来,所以内联函数运行速度比常规函数快。
但是代价是需要更多的内存。
使用场合:
执行函数代码的时间比处理函数调用机制的时间长,在我看来就是代码量比较少的方法而且多次使用的情况。
使用方法:
函数声明前加上关键字inline
函数定义钱加上关键字inline
宏与内联函数区别:
https://blog.csdn.net/chenguolinblog/article/details/27126589
2 引用变量
(1) 引用是已经定义变量的别名,主要是用作函数的形参,通过将引用用作参数,函数将使用原始数据,不是副本,这样感觉和传指针有一曲同工之妙,后续补充。
(2) 引用更加接近const指针,必须再创建的时候进行初始化
尽可能得使用const
使用const可以避免无意中修改数据的编程错误
使用const使函数能够处理const和非const实参 否则只能接受非const数据
使用const引用使函数能够正确生成并使用临时变量(如果实参和应用参数不匹配,c++将生成临时变量)
(3)返回引用需要注意得问题
避免返回函数终止时不再存在得内存单元引用(定义局部变量再返回)
处理方法:
返回一个作为参数传递给函数得引用
new分配新得空间
(4) 什么时候使用引用参数
修改调用函数中得数据对象
通过传递引用而不是整个数据对象,可以提高程序得运行速度
对于修改调用函数中数据得函数
如果数据对象是结构,使用引用和指针
如果数据对象使类对象,使用引用
如果数据对象是数组,使用指针
3 默认参数
对于带参数列表得函数,必须从左向右添加默认值
int get_line(int n,int m=2,int n=3)
4 函数重载
可以有多个同名得函数,因此对名称进行重载,重载得关键是函数得参数列表
匹配函数并不区分const与非const,把类型引用和类型本身视为同一个特征标,也就是下面这类不属于重载
double cube(double x)
double cube(double &x)
5 函数模板
模板不创建任何函数,只是告诉编译器如何定义函数
template <typename(class) AnyType>
void swap(AnyType &a,AnyType &b)
{}
函数模板后面弄明白再记录了
<c++primer plus>学习笔记1之第八章函数探幽的更多相关文章
- ES6学习笔记<二>arrow functions 箭头函数、template string、destructuring
接着上一篇的说. arrow functions 箭头函数 => 更便捷的函数声明 document.getElementById("click_1").onclick = ...
- python3.4学习笔记(二十) python strip()函数 去空格\n\r\t函数的用法
python3.4学习笔记(二十) python strip()函数 去空格\n\r\t函数的用法 在Python中字符串处理函数里有三个去空格(包括'\n', '\r', '\t', ' ')的函数 ...
- APUE学习笔记——10.9 信号发送函数kill、 raise、alarm、pause
转载注明出处:Windeal学习笔记 kil和raise kill()用来向进程或进程组发送信号 raise()用来向自身进程发送信号. #include <signal.h> int k ...
- Flutter学习笔记(4)--Dart函数
如需转载,请注明出处:Flutter学习笔记(4)--Dart函数 Dart是一个面向对象的语言,所以函数也是对象,函数属于Function对象,函数可以像参数一样传递给其他函数,这样便于做回调处理: ...
- Objective-C学习笔记 利用协议实现回调函数
来源:http://mobile.51cto.com/iphone-278354.htm Objective-C学习笔记 利用协议实现回调函数是本文要介绍的内容,主要是实现一个显示文字为测试的视图,然 ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十八章:立方体贴图
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十八章:立方体贴图 代码工程地址: https://github.c ...
- 《C++ primer》学习笔记整理
简介 本笔记目前已包含<C++ Primer>中的绝大部分内容,但尚有部分小节有所缺漏,如 19.1.19.2 节的笔记尚未整理,会持续更新. 本项目中的学习笔记是在学完一章内容后,对其要 ...
- C Primer Plus 学习笔记 -- 前六章
记录自己学习C Primer Plus的学习笔记 第一章 C语言高效在于C语言通常是汇编语言才具有的微调控能力设计的一系列内部指令 C不是面向对象编程 编译器把源代码转化成中间代码,链接器把中间代码和 ...
- Noah的学习笔记之Python篇:函数“可变长参数”
Noah的学习笔记之Python篇: 1.装饰器 2.函数“可变长参数” 3.命令行解析 注:本文全原创,作者:Noah Zhang (http://www.cnblogs.com/noahzn/) ...
随机推荐
- IOS获取当前地理位置文本
本文转载至 http://blog.csdn.net/lvxiangan/article/details/28101119 以下内容摘抄自网络,著作权属于原作者 方法1:使用ios自带联网查询功 ...
- CDH使用Solr实现HBase二级索引
一.为什么要使用Solr做二级索引二.实时查询方案三.部署流程3.1 安装HBase.Solr3.2 增加HBase复制功能3.3创建相应的 SolrCloud 集合3.4 创建 Lily HBa ...
- 【题解】T54037 最开始
传送门 题目大意: 对于\(a+ \frac 1{a^{}}=n\)求$a^{m}+ \frac 1{a^{m}} $,对\(10^9+7\)取模. 题目做法: 乍看此题,没有思路,但是如果用数学办法 ...
- Pentaho BIServer Community Edtion 6.1 使用教程 第一篇 软件安装
一.简介: Pentaho BI Server 分为企业版和社区版两个版本.其中 社区版 CE(community edtion) 为免费版本. 二.下载CE版(CentOS): 后台下载命令: no ...
- 《高性能Javascript》 Summary(三)
第八章.编程实践 Programming Practices 经验: 避免使用 eval_r()和Function构造器避免二次评估.此外,给setTimeout()和setInterval()函数传 ...
- Android Weekly Notes Issue #321
Android Weekly Issue #321 August 5th, 2018. Android Weekly Issue #321 本期内容包括: 开源项目Plaid的改版; 使用Tensor ...
- 20145239杜文超 《Java程序设计》第10周学习总结
20145239 <Java程序设计>第10周学习总结 教材学习内容总结 Java的网络编程 网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据. 网络概述 1.计算机 ...
- Linux常用命令全集
一,安装和登陆命令1,进入图形界面 startx 2,进入图形界面 init 5 3,进入字符界面 init 34,登陆 login 5,关机 poweroff -p 关闭机器的时候关闭电源-n 在关 ...
- Spring Boot2.0之多数据源分布式事务问题
分布式事务解决方案的问题, 分布式事务产生的原因: 多个不同的服务连接不同的数据源 ,做分布式事务的管理. 这种情况是连接两个数据源的情况,然后事务管理器是这样的 只管理了test02的这端业务代码. ...
- 分享知识-快乐自己:SpringMvc中的四种数据源及相关配置(整合快速集成开发)
数据库连接: jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://39.105.105.186:3306/SpringMybatis?us ...