还是只有那些实际使用通用零件的零件?
像这个例子一样:
template<class T>
class foo
{
public:
void addStuff(int x,T y)
{
ints_.push_back(x);
generics_.push_back(y);
}
void clear()
{
ints_.clear();
generics_.clear();
}
void setName(std::string name)
{
name_ = name;
}
std::string name_;
std::vector<int> ints_;
std::vector<T> generics_;
};
非通用函数是内联的,因为将它们放在.cpp文件中将需要专门化。
它们也会被复制吗?
只是好奇...
最佳答案
通过模板参数创建的每个类都是其自己的类。也就是说,如果您有foo<int>
,foo<double>
和foo<char>
,那么将存在3个不同的addStuff,clear和setName函数。那是因为会有3个不同的类。模板是编译时实体。它们是在编译期间引入的,因此没有尝试像这样“减小”代码大小。