使用 .ipp 扩展名和 .cpp 扩展名文件之间的区别

2024-01-24

假设我有 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(使用前将#替换为@)

使用 .ipp 扩展名和 .cpp 扩展名文件之间的区别 的相关文章

随机推荐