1、内联函数
C++中一个函数定义为内联函数,则需要在函数名前面放置关键字 inline
,在调用函数之前需要对函数进行定义。如果已定义的函数多于一行,编译器会忽略 inline
限定符。
在类定义中的定义的函数都是内联函数,即使没有使用 inline
说明符。
例如,
#include <iostream>
using namespace std;
inline int Max(int x, int y)
{
return (x > y)? x : y;
}
// 程序的主函数
int main( )
{
cout << "Max (20,10): " << Max(20,10) << endl;
cout << "Max (0,200): " << Max(0,200) << endl;
cout << "Max (100,1010): " << Max(100,1010) << endl;
return 0;
}
2、内联函数和普通函数区别
不建议滥用内联函数,因为它可能导致代码膨胀。现代编译器会自动优化(如内联),inline
关键字仅起到建议作用。
#include <iostream>
using namespace std;
// 内联函数
inline int addInline(int a, int b) {
return a + b;
}
// 普通函数
int addNormal(int a, int b) {
return a + b;
}
int main() {
int x = 10, y = 20;
// 使用内联函数
int resultInline = addInline(x, y);
cout << "内联函数的结果: " << resultInline << endl;
// 使用普通函数
int resultNormal = addNormal(x, y);
cout << "普通函数的结果: " << resultNormal << endl;
return 0;
}
1)编译结果不同
内联函数(有时称作在线函数或编译时期展开函数)是一种编程语言结构,用来建议编译器对一些特殊函数进行内联扩展(有时称作在线扩展);也就是说建议编译器将指定的函数体插入并取代每一处调用该函数的地方(上下文)。普通函数则会编译为单独的模块。
2)编译的时间不同
对于基于C的编译系统,内联函数的使用可能大大增加编译时间,因为每个调用该函数的地方都需要替换成函数体,代码量的增加也同时带来了潜在的编译时间的增加。
3)运行的效率不同
使用内联函数时,必须在程序占用空间和程序执行效率之间进行权衡,因为过多的比较复杂的函数进行内联扩展将带来很大的存储资源开支。
3、用于类的成员函数
类的成员函数如果在类定义中实现,则默认是内联函数。
#include <iostream>
using namespace std;
class Circle {
private:
double radius;
public:
Circle(double r) : radius(r) {}
// 默认内联
double area() {
return 3.14159 * radius * radius;
}
};
int main() {
Circle c(5.0);
cout << "Circle Area: " << c.area() << endl;
return 0;
}