C ++通用类,为什么需要.cpp文件?

问题描述 投票:1回答:1

[我希望在C ++ 11中编写一个通用类(例如:template <Class T>),但有人告诉我该实现只能写在.h文件中。

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

c++ class generics typedef
1个回答
0
投票

您实际上根本不需要.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>;
© www.soinside.com 2019 - 2024. All rights reserved.