05. inline

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函数:告诉编译器“复制粘贴”
inline void 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包含会重复定义
inline void Car::drive() {
    Log("driving");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值