zoukankan      html  css  js  c++  java
  • 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");
    }
  • 相关阅读:
    Shared Memory in Windows NT
    Layered Memory Management in Win32
    软件项目管理的75条建议
    Load pdbs when you need it
    Stray pointer 野指针
    About the Rebase and Bind operation in the production of software
    About "Serious Error: No RTTI Data"
    Realizing 4 GB of Address Space[MSDN]
    [bbk4397] 第1集 第一章 AMS介绍
    [bbk3204] 第67集 Chapter 17Monitoring and Detecting Lock Contention(00)
  • 原文地址:https://www.cnblogs.com/eilearn/p/10133857.html
Copyright © 2011-2022 走看看