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之第八章函数探幽的更多相关文章

  1. ES6学习笔记<二>arrow functions 箭头函数、template string、destructuring

    接着上一篇的说. arrow functions 箭头函数 => 更便捷的函数声明 document.getElementById("click_1").onclick = ...

  2. python3.4学习笔记(二十) python strip()函数 去空格\n\r\t函数的用法

    python3.4学习笔记(二十) python strip()函数 去空格\n\r\t函数的用法 在Python中字符串处理函数里有三个去空格(包括'\n', '\r', '\t', ' ')的函数 ...

  3. APUE学习笔记——10.9 信号发送函数kill、 raise、alarm、pause

    转载注明出处:Windeal学习笔记 kil和raise kill()用来向进程或进程组发送信号 raise()用来向自身进程发送信号. #include <signal.h> int k ...

  4. Flutter学习笔记(4)--Dart函数

    如需转载,请注明出处:Flutter学习笔记(4)--Dart函数 Dart是一个面向对象的语言,所以函数也是对象,函数属于Function对象,函数可以像参数一样传递给其他函数,这样便于做回调处理: ...

  5. Objective-C学习笔记 利用协议实现回调函数

    来源:http://mobile.51cto.com/iphone-278354.htm Objective-C学习笔记 利用协议实现回调函数是本文要介绍的内容,主要是实现一个显示文字为测试的视图,然 ...

  6. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十八章:立方体贴图

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十八章:立方体贴图 代码工程地址: https://github.c ...

  7. 《C++ primer》学习笔记整理

    简介 本笔记目前已包含<C++ Primer>中的绝大部分内容,但尚有部分小节有所缺漏,如 19.1.19.2 节的笔记尚未整理,会持续更新. 本项目中的学习笔记是在学完一章内容后,对其要 ...

  8. C Primer Plus 学习笔记 -- 前六章

    记录自己学习C Primer Plus的学习笔记 第一章 C语言高效在于C语言通常是汇编语言才具有的微调控能力设计的一系列内部指令 C不是面向对象编程 编译器把源代码转化成中间代码,链接器把中间代码和 ...

  9. Noah的学习笔记之Python篇:函数“可变长参数”

    Noah的学习笔记之Python篇: 1.装饰器 2.函数“可变长参数” 3.命令行解析 注:本文全原创,作者:Noah Zhang  (http://www.cnblogs.com/noahzn/) ...

随机推荐

  1. Unix环境高级编程---信号

    参考博客:http://blog.csdn.net/alex_my/article/details/39494129 1. 信号概念 何为信号? 信号是一种软中断,可以由以下情形触发: -1: 用户按 ...

  2. 九度OJ 1028:继续畅通工程 (最小生成树)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3140 解决:1338 题目描述:     省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有 ...

  3. AWS:3. S3

    主要内容 1.S3入门 2.S3安全性 对象 权限 访问策略 3.S3实战--BAAS 应用与定价 S3入门 S3概念 S3是simple storge server简单存储服务 相当于网盘,例如百度 ...

  4. 认识影片版本(CAM、TS、TC、DVD、HD、BD、TVRIP等)

    许多朋友在下载电影的时候, 往往会被各种各样的版本标识弄糊涂,今天把各种版本的缩写收集在一起,希望对大家有所帮助 . 引用: 1.CAM(枪版)    CAM 通常是用数码摄像机从电影院盗录.有时会使 ...

  5. subline 的常用命令

    zsh 配置 编辑zsh 命令 vim .zshrc alias subl="/Applications/Sublime\ Text.app/Contents/SharedSupport/b ...

  6. requests不加代理

    requests里的proxies不加代理可以设置为空,就会使用本机IP proxies={}

  7. HAOI 2017 游记

    省选 2017年4月23日 流水账式游记,不喜勿喷. Day0: 准备出发,上午敲了一顿板子,板子敲完了就打小游戏,老师也不管了. 过程中各种奶,说什么今年一定考仙人掌啦,今年一定考字符串啦,今年一定 ...

  8. Android中m、mm、mmm、mma、mmma的区别

    m:编译整个安卓系统 makes from the top of the tree mm:编译当前目录下的模块,当前目录下需要有Android.mk这个makefile文件,否则就往上找最近的Andr ...

  9. React Native 微信分享闪退的解决办法

    Android中编写微信分享功能时出现了闪退的现象,经过几番资料的查找,发现是应用签名的问题,解决办法如下: 1.    进入微信官网的开放平台--->资源中心---->资源下载----& ...

  10. Spring 4.3 的新功能和增强

    转载自https://my.oschina.net/waylau/blog/698186 核心容器改进 核心容器额外提供了更丰富的元数据来改进编程. 默认 Java 8 的方法检测为 bean 属性的 ...