C++:内联函数
来源:互联网 发布:mmd动作数据怎么做 编辑:程序博客网 时间:2024/05/16 03:07
介绍
- 在函数返回类型前加上关键字inline就可以将函数指定为内联函数。
内联函数可避免函数调用开销。因为内联函数将在程序每个调用点上“内联地”展开,如
cout << IsIntEqual( 10, 10 ) << endl;
在编译时将展开为cout << (static_cast<bool>(a==b)
。inline bool IsIntEqual( int a, int b ){ return static_cast<bool>( a == b );}
- 内联函数适用于优化小的,只有几行的而且经常被调用的函数。
- 把内联函数放入头文件。内联函数的定义对编译器而言必须是可见的,仅有函数原型是不够的;因为内联函数会在调用处展开,所有只要使用了内联函数的地方,就有一份内联函数的代码,把内联函数放入头文件,能保证所有调用的地方展开的代码是相同的;在头文件中加入或修改内联函数,使用了此头文件的所有源文件必须重新编译。
普通函数的内联
普通函数的内联只需要在函数返回值前加上关键字inline即可。内联函数的前向声明关键字inline好像可以省略(编译运行没问题,未深度证实)
//前身声明 inline bool IsIntEqual( int a, int b );bool IsIntEqual( int a, int b );int main(){ cout << IsIntEqual( 10, 10 ) << endl; return 0;}inline bool IsIntEqual( int a, int b ){ return static_cast<bool>( a == b );}
类成员函数的内联
- 在类内部定义的成员函数,将自动作为inline处理。
- 也可以显示的在成员函数返回值前加inline。在类成员声明、定义处任意一个地方指定了inline或两者都指定,都可以使其成为内联函数。
- 像其他inline一样,inline成员函数的定义必须在调用该函数的每个源文件中可见。不在类定义体内定义的inline成员函数,其定义通常应放在有类定义的同一头文件中(要不然会出现无法找到相应符号的链接错误)。
例子:
class InlineTest{public: //在类声明中定义函数,隐式地成为内联函数 int get1() const { return 1; } //显示指定inline,定义在类声明外部 inline int get2() const; //类声明中未指定inline,但在类声明外部会显示指定 int get3() const; //在类声明及类声明外部都显示指定 inline int get4() const;};int InlineTest::get2() const{ return 2;}inline int InlineTest::get3() const{ return 3;}inline int InlineTest::get4() const{ return 4;}
模板函数的内联
函数模板可以用与非模板函数一新的方式声明为inline,规则也一样。说明符放在形参表之后,返回类型之前,不能放在关键字template之前,
template<class T>class InlineTest{public: //在类声明中定义函数,隐式地成为内联函数 T get1() const { return 1; } //指定inline,定义在类声明外部 inline T get2() const; //类声明中未指定inline,但在类声明外部会指定 T get3() const; //在类声明及类声明外部都指定 inline T get4() const;};template<class T>T InlineTest<T>::get2() const{ return 2;}template<class T>inline T InlineTest<T>::get3() const{ return 3;}template<class T>inline T InlineTest<T>::get4() const{ return 4;}
阅读全文
0 0
- C语言内联函数
- C++:内联函数
- C 内联函数
- c++-inline 内联函数
- C语言内联函数
- C++_inline内联函数
- 【C++】内联函数,inline
- C++---函数内联
- C 内联函数
- [C++]内联函数
- c/c++内联函数
- C++_内联函数
- c++inline内联函数
- C++:内联函数
- 【C++】内联函数
- C中的内联函数行为
- linux c/c++ 内联函数
- C中的内联函数行为
- Ubuntu添加和删除用户
- 做到这几点,才能吸引HR的注意!
- SAP批次级别的意义及启用操作
- Qt基础 04_Qt对话框(三) 标准对话框
- 在wicket框架下生成年份与月份DropDownChoice下拉框
- C++:内联函数
- Retrofit2 笔记
- 欢迎使用CSDN-markdown编辑器
- AV1视频编码标准资源汇总
- PHP学习笔记
- jquery怎么讲html页面中指定标签,删除,即从html代码中删除,包括本元素、及其子元素
- 数据应用达人之SQL基础教程分享1
- Apache自带ab压测功能结果说明
- CentOS7中,vnc分辨率设置。