赞
踩
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 化。
编写匆忙,有错误的地方请指正,谢谢!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。