还是只有那些实际使用通用零件的零件?

像这个例子一样:

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个不同的类。模板是编译时实体。它们是在编译期间引入的,因此没有尝试像这样“减小”代码大小。

10-02 02:44
查看更多