1.inline简介 2.inline其它知识点 1.inline简介 inline直译是"内联" , 它的作用如下: a. 它告诉编译器: 调用这个函数时, 不要像普通函数那样"跳转到函数定义的位置执行" , 而是把函数的代码直接"复制粘贴" 到调用的地方 b. 哪怕编译器忽略了内联优化, 只要函数加了inline, 链接器就会遵守规则: 当多个. obj文件里有同一个Log函数的定义时, 只保留其中一份, 不会报重复定义错误1 ) . 普通函数( 无inline) #include <iostream> using namespace std ; // 普通函数:定义在全局 void PrintMsg ( string msg) { cout<< msg<< endl; } int main ( ) { PrintMsg ( "Hello" ) ; // 执行时:跳转到PrintMsg的定义处执行,执行完再跳回main return 0 ; } 2 ) . inline 函数(加 inline)#include <iostream> using namespace std ; // inline函数:告诉编译器“复制粘贴” inlinevoid PrintMsg ( string msg) { cout<< msg<< endl; } int main ( ) { PrintMsg ( "Hello" ) ; // 执行时:编译器直接把cout << "Hello" << endl;复制到这里 return 0 ; } 2.inline其它知识点 1 ) . 类内定义的成员函数, 默认是inline的class Car { public : // 类内定义:默认inline,无需手动加 void drive ( ) { Log ( "driving" ) ; } } ; 2 ) . 类外定义的成员函数/ 全局函数, 必须显式加inline, 如果你类成员函数想在类外定义( 但仍放在头文件里) , 就必须加class Car { public : void drive ( ) ; // 类内声明 } ; // 类外定义:必须加inline,否则多个.cpp包含会重复定义 inlinevoid Car:: drive ( ) { Log ( "driving" ) ; }