C++中inline注意事项

inline 函数的实现体可以在 .h 文件中也可以在 .cpp 文件中。下面阐述两种实现方式的区别。

第一种情况,实现体在 .h 文件中。这种情况下的 inline 函数所在头文件可被多次包含,不会产生重复定义的错误。若定义的 inline 函数(public 函数)会在多个 .cpp 文件中调用,应该使用该方式实现 inline 函数。这种情况有以下两种效果相同的实现方式,略去 .cpp 文件中内容。

① 定义体和实现体合并在一起

// Test.h

Class Test

{

public:

Test();

~Test();

void operation()

{

// 实现 operation 函数

......

}

}

② 定义体和实现体分离开

// Test.h

Class Test

{

public:

Test();

~Test();

void operation();

}


inline void Test::operation()

{

// 实现 operation 函数

......

}

第二种情况,将inline 函数的实现体放在 .cpp 文件中。这种情况下所定义的 inline 函数只能在其实现体所在 .cpp 文件中使用,不能在其他 .cpp 文件中调用(会报链接错误),非 public 的 inline 函数可采用此方式实现,public 类型 inline 函数不推荐使用该方式实现。

// Test.h

Class Test

{

public:

Test();

~Test();

void operation();

}


// Test.cpp

Test::Test()

{ // 实现构造函数

}


Test::~Test()

{ // 实现析构函数

}


inline void Test::operation()

{

// 实现 operation 函数

......

}

注:定义体和实现体合并在一起时编译器会自动将函数 inline 化,定义体和实现体分离时,需在实现体前加关键字 inline(在定义体前加不起作用)。inline 只是对编译器“提建议”,编译器会忽略某些函数(如很长的函数和带循环的函数等)的 inline 请求。一般情况下不需要使用 inline 函数,进行性能优化时可将使用频繁而函数体又小的函数 inline 化。

编写匆忙,有错误的地方请指正,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值