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. mongodb 配置单实例与双实例

    环境: centos6.5 192.168.16.70 配置单实例mongodb:[root@www soft]# tar xf mongodb-linux-x86_64-rhel62-3.2.7.t ...

  2. android菜鸟学习笔记6----android布局(一)

    Android应用的UI组件都是继承自View类,View类表示的就是一个空白的矩形区域.常用的组件如TextView.Button.EditText等都直接或间接继承自View. 此外,View还有 ...

  3. java 对象变量 c++对象指针 初始化对象变量的2中方法

    java 对象变量 c++对象指针 java null引用 c++ null指针 Date deadline  是 对象变量,它可以引用Date类型的对象,但它不是一个对象,实际上它也没有引用对象. ...

  4. BZOJ4920: [Lydsy1706月赛]薄饼切割

    BZOJ4920: [Lydsy1706月赛]薄饼切割 Description 有一天,tangjz送给了quailty一张薄饼,tangjz将它放在了水平桌面上,从上面看下去,薄饼形成了一个H*W的 ...

  5. hdu 4927 java程序

    /*对于本题题意非常easy 关键在于求杨辉三角时的二项式是没实用到优化,导致超时. 对于第n行的二项式的第i个可有第i-1个乘于一个数处于一个数得到,要用到大数.java比較方便. 假如n=6,i= ...

  6. spring运行步骤

    Spring确实使你能通过最简单可行的解决的方法来解决你的问题. 而这是有有非常大价值的.同一时候他的源码的设计理念也受到非常多程序猿的追捧,简洁,易用.但是从哪着手研究Spring却是非常多新手头疼 ...

  7. Java for LeetCode 103 Binary Tree Zigzag Level Order Traversal

    Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to ...

  8. Java for LeetCode 096 Unique Binary Search Trees

    Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For examp ...

  9. python环境的caffe配置

    基本按照这个教程来 http://blog.csdn.net/zb1165048017/article/details/52980102 步骤 安装Anaconda2,去官网上下载,注意下载对应自己p ...

  10. 《机器学习实战》学习笔记第七章 —— AdaBoost元算法

    主要内容: 一.提升方法与AdaBoost算法的简介 二.AdaBoost算法 三.代码解释 一.提升方法与AdaBoost算法的简介 1.提升方法:从弱学习算法出发,反复学习,得到一系列弱分类器(又 ...