C++(十七) — 宏代码、内联函数

 1、C++ 表达式返回值

  返回引用:当函数返回引用类型时,没有复制返回值。相反,返回的是对象本身。(与之对应的C语言中,返回的是变量的值)

   C++中,表达式返回的是变量本身(也就是变量对应的地址)。编译器帮我们完成  取地址的工作。

 2、引用与指针

   引用是别名,必须在声明的时候初始化。

  引用:在函数调用时,是变量的别名,不可以单独存在;

  指针:本身有自己的地址,可以单独存在。

3、内联函数

   在C++中,使用 常量定义 const 代替 # define 定义;使用内联函数定义 代替 宏定义,区别是:

  • 内联函数:编译器处理,直接将编译后的函数体插入调用的地方;
  • 宏代码片段:有预处理器处理,进行简单的文本替换,没有任何编译过程;

  内联函数,一些常用的短小的函数适合。减少函数调用时,系统的额外开销(时间和空间),因为:系统在编译程序时,已经把内联函数的函数体代码插入到相应的函数调用位置,成为主调函数内的一段代码,可以直接执行,不必要再转换流程控制权。但使得主调函数代码变长(就是替代,直接将函数体插入函数调用位置)。相对普通函数优势:省去函数调用时的压栈、跳转、返回开销。

  注意:

  • 内联函数体不能包含循环语句,switch语句;
  • 要先定义、后调用,和函数体的实现写在一起,不能先声明内联函数原型,再调用、定义;
  • C++编译器内部有优化,不一定准许函数的内联请求,那就变为一个普通函数;
inline int max(int x, int y, int z)
{
    return ((x >= y) ? (x >= z ? x : z) : (y >= z ? y : z));
}

void main()
{
    int a, b, c;
    cout << "enter three integers: ";
    cin >> a >> b >> c;
    cout << "maximum is  " << max(a, b, c) << endl;
    
    system("pause");
}

 

posted @ 2018-12-17 20:55  深度机器学习  阅读(427)  评论(0编辑  收藏  举报