速度还行,两天看完一章,就是有细节没去扣。书上的大部分知识点和代码都看了,这个还是可以的。

今天继续来学习函数的高级特性,要涉及到以下的主题。

  • 内联函数(inline function)
  • 引用变量(reference variable)
  • 通过引用传递函数参数
  • 默认变量
  • 函数重载
  • 函数模板(template)
  • 函数模板的specializations

C++内联函数

从机器语言的角度去解释函数的调用为什么会有开销,这一点值得深入研究以下,增加认识。

C++的内敛函数会用相应的代码去替代函数调用,这样的话不用跳到另一处去执行然后再跳回来,所以内敛函数要比一般的函数运行的稍快一些。

内敛函数不好的地方就是会占用内存,比如这个函数在10个地方被调用了,那么内联函数的这个代码会被存10份。

如何声明一个内联函数?

什么时候适合使用内联函数?

编译器一定认可你的内联函数么?

C++内联函数和C的宏定义(macro definition)

#include <iostream>

// 内联函数的定义
inline double square(double x) {return x * x; };

int main() {
    using namespace std;
    double a, b;
    double c = 13.0;

    a = square(5.0);
    b = square(4.5 + 7.5);

    cout << "a = " << ", b = " << b << "\n";
    cout << "c = " << c;
    // c++的意思是, 先去计算表达式, c = 13
    // 把c = 3 拿去函数调用, 然后c再自增
    cout << ", c squared = " << square(c++) << "\n";
    cout << "Now c = " << c << "\n";

    ;
}

C++引用

https://www.cnblogs.com/tuhooo/p/5377406.html

默认参数

不太喜欢用默认参数,就这样吧

函数重载

这个概念我知道

函数模板

C++里面的泛型编程,抽取与类型无关的代码,达到通用的效果。

Adventures in Functions的更多相关文章

  1. c++中左值的含义

    <<cpp primer plus 6th edition>>中的原文(Chapter 8 Adventures in Functions): What is an lvalu ...

  2. [ZZ] Adventures with Gamma-Correct Rendering

    http://renderwonk.com/blog/index.php/archive/adventures-with-gamma-correct-rendering/ Adventures wit ...

  3. asp.net MVC helper 和自定义函数@functions小结

    asp.net Razor 视图具有.cshtml后缀,可以轻松的实现c#代码和html标签的切换,大大提升了我们的开发效率.但是Razor语法还是有一些棉花糖值得我们了解一下,可以更加强劲的提升我们 ...

  4. 【跟着子迟品 underscore】Array Functions 相关源码拾遗 & 小结

    Why underscore 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. 阅读一些著名框架类库的源码,就好像和一个个大师对 ...

  5. 【跟着子迟品 underscore】Object Functions 相关源码拾遗 & 小结

    Why underscore 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. 阅读一些著名框架类库的源码,就好像和一个个大师对 ...

  6. ajax的使用:(ajaxReturn[ajax的返回方法]),(eval返回字符串);分页;第三方类(page.class.php)如何载入;自动加载函数库(functions);session如何防止跳过登录访问(构造函数说明)

    一.ajax例子:ajaxReturn("ok","eval")->thinkphp中ajax的返回值的方法,返回参数为ok,返回类型为eval(字符串) ...

  7. QM模块包含主数据(Master data)和功能(functions)

    QM模块包含主数据(Master data)和功能(functions)   QM主数据   QM主数据 1 Material   Master MM01/MM02/MM50待测 物料主数据 2 Sa ...

  8. jQuery String Functions

    In today's post, I have put together all jQuery String Functions. Well, I should say that these are ...

  9. 2-4. Using auto with Functions

    在C++14中允许使用type deduction用于函数参数和函数返回值 Return Type Deduction in C++11 #include <iostream> using ...

随机推荐

  1. java_selenium 开发环境搭建

    java selenium 开发环境搭建 很多同学问我java selenium的开发环境怎么搭建,在这里简要说明一下. 安装jdk 这个自己一定要会 下载IDE 对于初学者来说java IDE无疑是 ...

  2. WSAAsyncSelect模型触发不了FD_Close消息?

    原帖链接: http://bbs.csdn.net/topics/330164174 楼主: Server用WSAAsyncSelect模型,Client关闭程序时(不进行shutdown与close ...

  3. 如何给mysql用户分配权限

    1,Mysql下创建新的用户 语法: 1.create user 用户名 identified by '密码'; 例:create user xiaogang identified by '12345 ...

  4. Oracle中文乱码解决办法总结

    AMERICAN_AMERICA.WE8ISO8859P1,这个字符编码是西欧字符编码,对应于.Net的就是iso-8859-1字符编码,所以只需要改到系统的默认字符编码就行了. 解决方法: (1) ...

  5. ldd命令

    ldd命令用于判断某个可执行的 binary 档案含有什么动态函式库. 参数说明: --version 打印ldd的版本号 -v --verbose 打印所有信息,例如包括符号的版本信息 -d --d ...

  6. C#基础第三天-作业答案-集合-冒泡排序-模拟名片

    .冒泡排序 Console.WriteLine("对集合里的数进行排序,请输入第一个数:"); int a = int.Parse(Console.ReadLine()); Con ...

  7. [MeetCoder] Crossing Bridge

    Crossing Bridge Description N people wish to cross a bridge at night. It’s so dark around there that ...

  8. Objective-c在宏里拼接字符串

    //正式服务器#define API_DOMAIN @"www.online.com"//测试服务器//#define DOMAINXX @"192.168.0.10&q ...

  9. SerDes、RocketIO、GTX

    1.SerDes:serdes = serial and deserial,就是组串器与解串器,也就是通用的高速IO. GTX,GTP,GTH等都是SERDES,只是速率不一样,XILINX叫其不同的 ...

  10. my stackoverflow

    https://stackoverflow.com/questions/48017641/how-to-monitor-elastic-stack-without-x-pack https://sta ...