zoukankan      html  css  js  c++  java
  • 3.3内联函数

    inline只是对于编译器的建议

    一般情况下,对内联函数有如下的限制:

    1不能有递归

    2不能包含静态数据

    3不能包含循环

    4不能包含switch和goto语句

    5不能包含数组

    若一个内联函数定义不满足以上限制,则编译器会把它当作普通函数

    使用关键字inline说明的函数称内联函数。在C++中,除具有循环语句、switch语句的函数不能说明为内联函数外,其他函数都可以说明为内联函数。

     1 #include <iostream>
     2 using namespace std;
     3 
     4 inline int getX3(int x);//声明内联函数
     5 
     6 inline int getX3(int x)//定义
     7 {
     8     return x*x*x;
     9 }
    10 
    11 void main()
    12 {
    13     std::cout << getX3(1 + 2) << std::endl;//27
    14 
    15     system("pause");
    16 }

    //内联函数原则上放在头文件

    //内联函数需要展开,VS要求放在头文件

    //如果一个类在头文件定义,而这个类里面有内联函数,则这个内联函数也要在头文件定义。

    //如果内联函数在头文件声明,在源文件定义,将会报错

    //error LNK2001: 无法解析的外部符号 "public: void __thiscall fushu::showall(int,int)" (?showall@fushu@@QAEXHH@Z)

    在头文件定义一个类:

     1 class fushu
     2 {
     3 public:
     4     fushu();
     5     ~fushu();
     6 
     7     //内联函数原则上放在头文件
     8     //内联函数需要展开,VS要求放在头文件
     9     //如果一个类在头文件定义,而这个类里面有内联函数,则这个内联函数也要在头文件定义。
    10     //如果内联函数在头文件声明,在源文件定义,将会报错
    11     //error LNK2001: 无法解析的外部符号 "public: void __thiscall fushu::showall(int,int)" (?showall@fushu@@QAEXHH@Z)
    12     inline void fushu::showall(int, int);
    13 };
    14 
    15 inline void fushu::showall(int x, int y)
    16 {
    17     //复合代码
    18     std::cout << (this->x = x) << " " << (this->y = y) << std::endl;
    19 }
  • 相关阅读:
    LOAD XML
    LOAD DATA
    INSERT 插入语句
    keras第一课
    android系统开发之开启启动
    Qt使用数据库
    微信订阅号案例之一
    python_install
    QtObject使用
    Qml_JS文件的使用
  • 原文地址:https://www.cnblogs.com/denggelin/p/5648653.html
Copyright © 2011-2022 走看看