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");
return 0;
}
2).inline 函数(加 inline)
#include <iostream>
using namespace std;
inline void PrintMsg(string msg) {
cout << msg << endl;
}
int main() {
PrintMsg("Hello");
return 0;
}
2.inline其它知识点
1).类内定义的成员函数, 默认是inline的
class Car {
public:
void drive() {
Log("driving");
}
};
2).类外定义的成员函数/全局函数, 必须显式加inline, 如果你类成员函数想在类外定义(但仍放在头文件里), 就必须加
class Car {
public:
void drive();
};
inline void Car::drive() {
Log("driving");
}