Adventures in Functions

时间:2022-02-08 15:20:39

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

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

  • 内联函数(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++里面的泛型编程,抽取与类型无关的代码,达到通用的效果。