假设我有 2 个头文件、1 个 .ipp 扩展文件和一个 main.cpp 文件:
第一个头文件myClass1.h(就像Java中的接口):
template<class T>
class myClass1{
public:
virtual int size() = 0;
};
第二个头文件myClass2.h:
#include "myClass1.h"
template<class T>
class myClass2 : public myClass1<T>{
public:
virtual int size();
private:
int numItems;
};
#include "myClass2.ipp"
然后是我的myClass2.ipp file:
template <class T>
int myClass2<T>::size()
{
return numItems;
}
最后一张是我的main.cpp:
#include "myclass2.h"
void tester()
{
myClass2<int> ForTesting;
if(ForTesting.size() == 0)
{
//......
}
else
{
//.....
}
}
int main(){
tester();
return 0;
}
myClass1、myClass2 和 myClass2.ipp 属于头文件。源文件中的main.cpp。
使用这种方式来实现你的程序而不是仅仅使用有什么好处
.h 和 .cpp 文件?什么是 .ipp 扩展文件? .ipp 和 .cpp 之间的区别?
TR;DR
The .cpp
文件是一个单独的翻译单元,.ipp
包含在标头中并进入包括该标头在内的所有翻译单元。
解释
在模板之前,您将方法的声明放在头文件中,然后执行到.cpp
文件。这些文件作为自己的编译单元单独编译。
对于模板,这不再可能,几乎所有模板方法都需要在标头中定义。为了至少在逻辑层面上将它们分开,有些人将声明放在标头中,但将模板方法的所有实现移至.ipp
files (i
对于“内联”)并包括.ipp
文件位于标题末尾。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)