zoukankan      html  css  js  c++  java
  • 07 c++中的内联函数inline

    文章链接:

    问题描述:类中成员函数缺省默认是内联的,如果在类定义时就在类内给出函数定义,那当然最好。如果在类中未给出成员函数定义,而又想内联该函数的话,那在类外要加上 inline,否则就认为不是内联的。内联函数的inline要加在函数前面,不可以加在声明前面。

     1 class A
     2 {
     3     public:void Foo(int x, int y) {  } // 自动地成为内联函数
     4 }
     5 //正确写法:
     6 // 头文件
     7 class A
     8 {
     9     public:
    10     void Foo(int x, int y);
    11 }
    12 // 定义文件
    13 inline void A::Foo(int x, int y){} 
    14 
    15 //错误写法:
    16 inline void Foo(int x, int y); // inline 仅与函数声明放在一起
    17 void Foo(int x, int y){}
    View Code

    1. 内联函数作用:为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题,特别的引入了 inline 修饰符,表示为内联函数。

    例子:

     1 #include <stdio.h>
     2 //函数定义为inline即:内联函数
     3 inline char* dbtest(int a) {
     4     return (i % 2 > 0) ? "" : "";
     5 } 
     6  
     7 int main()
     8 {
     9    int i = 0;
    10    for (i=1; i < 100; i++) {
    11        printf("i:%d    奇偶性:%s /n", i, dbtest(i));    
    12    }
    13 }
    View Code

     内联函数是在程序编译的时候替换的方式加入程序中的。

    2. 内联函数使用的限制:

    inline 的使用是有所限制的,inline 只适合涵数体内代码简单的涵数使用,不能包含复杂的结构控制语句例如 while、switch,并且不能内联函数本身不能是直接递归函数(即,自己内部还调用自己的函数)。

    代码较长,内部出现循环不适合使用内联函数。

    3. 内联函数只是一个对编译器的建议,具体实不实现看编译器认为函数复不复杂。

    4.内联函数最好放在头文件中。

  • 相关阅读:
    javascript检测浏览器插件
    登陆注册数据库设计与任务分配
    做网站的一些定律原理和效应
    为什么我们应该像盖房子那样写程序?
    最近项目中遇到的一些设计问题
    反向代理缓存
    《你必须知道的.NET》读书笔记
    锋利的Jquery读书笔记
    将pdf转成jpg格式
    《你必须知道的.NET》第五章读书笔记
  • 原文地址:https://www.cnblogs.com/fanhua666/p/11512428.html
Copyright © 2011-2022 走看看