关于内联函数
关键字:inline
C++ 内联函数是通常与类一起使用。如果一个函数是内联的,那么在编译时,编译器会把该函数的代码副本放置在每个调用该函数的地方。
对内联函数进行任何修改,都需要重新编译函数的所有客户端,因为编译器需要重新更换一次所有的代码,否则将会继续使用旧的函数。
如果想把一个函数定义为内联函数,则需要在函数名前面放置关键字 inline,在调用函数之前需要对函数进行定义。如果已定义的函数多于一行,编译器会忽略 inline 限定符。
在类定义中的定义的函数都是内联函数,即使没有使用 inline 说明符。
下面是一个实例,使用内联函数来返回两个数中的最大值:
#include <iostream> using namespace std; inline int Max(int x, int y) { return (x > y)? x : y; // 如果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; }
当上面的代码被编译和执行时,它会产生下列结果:
Max (20,10): 20 Max (0,200): 200 Max (100,1010): 1010
内联函数与普通函数的区别
内联函数必须是比较简单的代码,这样才可以直接编译函数的内部语句,如果函数过于繁琐,即便是加上inline也不会按照内联函数的方法进行编译。另外,循环体函数也不能编译成内联函数。
类内定义与内联函数
像下面这种函数名与函数体都写在类里面的函数形式被称作类内定义,编译器编译的时候会把它默认成内联函数。
class Student
{
public:
void setAge(int _age){age = _age;}
int getAge(){return age;}
void study(){}
private:
string name;
int age;
};