内联函数是C++的重要特性之一。 那么,首先我们来了解一下为什么要使用内联函数,内联函数的目的是什么?
函数调用本质上是通过调用汇编指令来实现的。 当运行到call指令时,CPU会执行一系列操作(包括保存返回地址和复制参数,这些操作与实际任务无关,会花费一定的时间),然后将控制权转移给指定的函数并在执行完成后返回控制权。
在这个过程中,如果切换时间大于运行时间,就会有明显的时间开销,这种情况通常发生在代码量较小的函数中。
C++提供了内联函数来减少函数调用开销。 内联函数是在调用时逐行展开的函数。 当调用内联函数时,内联函数的整个代码将被插入或替换到调用内联函数的位置。 此替换由 C++ 编译器在编译时执行。
定义内联函数的语法如下:
inline return-type function-name(parameters)
{
// function code
}
另请注意,这在某些情况下可能不起作用:
如果函数包含循环(for、while、do-while)如果函数包含静态变量。 如果函数是递归的。 如果函数返回类型不为void并且函数体中不存在语句。 如果函数包含或goto语句.隐式
在类范围内(即在类的大括号内)定义的成员函数是隐式的。 (当在类外部定义成员函数时,需要显式声明)
class A {
public:
void print(int a, int b) {
cout << a + b << endl;
}
};
上面的代码相当于:
class A {
public:
inline void print(int a, int b) {
cout << a + b << endl;
}
};
此外,作用于函数的声明或定义也是可以接受的。
VS相关
以上用例均在 vs 模式下运行,并且优化选项均打开。 它们在调试模式下无效。
在“ ”选项下,如果选择“”,编译器也会内联一些没有声明的“小函数”。 如果选择“仅适用于”,则仅内联声明的函数。
参考:
在 C++ 中-
简单:在C++中,sum是用于声明还是定义?
为什么不起作用? -CSDN社区