我曾经认为过去是这样的:
.h
文件是C和C++的头文件,通常只包含声明..c
文件是C源代码..cpp
文件是C++源代码(也可以是C源代码).那些文件就像.hpp
,.cc
然后.cxx
出现了,我完全糊涂了......那些之间的区别是什么?你什么时候使用"新"的?
如果我在类之外定义模板类的构造函数\析构函数,则会出现链接器错误。难道不允许吗?我使用 Visual Studio 2010。
错误 1>main.obj : 错误 LNK2019: 函数 _main 中引用了无法解析的外部符号“public: __thiscall Tree::~Tree(void)” (??1?$Tree@H@@QAE@XZ)
1>main.obj : 错误 LNK2019: 函数 _main 中引用了无法解析的外部符号“public: __thiscall Tree::Tree(void)” (??0?$Tree@H@@QAE@XZ)
在.h文件中
template <class T>
class Tree{
public:
Tree(void);
~Tree(void);
T x;
};
Run Code Online (Sandbox Code Playgroud)
在 .cpp 文件中
#include "Tree.h"
template <class T> Tree<T>::Tree(void){
}
template <class T> Tree<T>::~Tree(void){
}
Run Code Online (Sandbox Code Playgroud)
在main.cpp文件中
#include "Tree.h"
int main(){
Tree<int> t;
return 0;
}
Run Code Online (Sandbox Code Playgroud)