提问者:小点点

C++泛型类,为什么我需要。cpp文件?


我希望用C++11编写一个泛型类(如:template),但我被告知该实现只能在.h文件中编写。

另一方面,我应该提交一些.cpp文件。 有人能解释一下这矛盾吗? 如果所有的定义和实现都需要在.h文件中,为什么我还需要.cpp呢?


共1个答案

匿名用户

实际上,您根本不需要.cpp文件,并且有大量仅有头的库示例。

但是,为某些模板实例化提供.cpp文件可能是有益的,因为这样可以提供另一个项目可以链接的二进制文件。 这可以节省编译时间。

举个例子:

您的标题foo.h

template<typename T>
class Foo {
  // some functions
};

如果foo通常用浮点类型实例化,则可以提供一个foo.cpp,包含例如。

template class Foo<float>;
template class Foo<double>;
template class Foo<long double>;

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(c++|泛|型|类|cpp|文件)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?