*.inl 文件是内联函数的源文件, 内联函数通常在c++头文件中实现的,但是在内联函数较多的情况下,为了避免头文件过长、版面混乱,使头文件看起来更简洁,可以将所有的内联函数定义移到一个单独的文件中去,然后再用#include指令将它包含到类声明的后面(类的头文件的底部)。这样的文件称为一个内联函数定义文件。
对于比较大的工程来说,出于管理方面的考虑,模板函数、模板类的声明部分一般存放在一个或少数几个文件中,而将其定义部分存放在inl文件中,然后在相应的头文件中包含进来。
示例代码如下:
//CTemplate .h文件
#ifndef _CTEMPLATE_H
#define _CTEMPLATE_H
template<class T1,class T2>
class CTemplateClass
{
public:
CTemplateClass();
virtual ~CTemplateClass();
const char* GetUserData () const;
private:
char* m_szUserName[100];
};
#include "CTemplate.inl"
#endif // _CTEMPLATE_H
//CTemplate .inl文件
template<class T1,class T2>
CTemplateClass<T1,T2>::CTemplateClass()
{
}
template<class T1,class T2>
CTemplateClass<T1,T2>::~CTemplateClass()
{
}
template<class T1,class T2>
inline const char* CTemplateClass<T1,T2>::GetUserData () const
{
return m_szUserData; //...
}