加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 对于模板类,非泛型成员函数是否重复?

发布时间:2020-12-16 09:35:45 所属栏目:百科 来源:网络整理
导读:或者只是实际使用通用零件的那些? 就像在这个例子中: templateclass Tclass 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)
或者只是实际使用通用零件的那些?

就像在这个例子中:

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&gt ;,那么foo< double>和foo< char>然后会有3个不同的addStuff,clear和setName函数.那是因为会有3个不同的类.模板是编译时实体.它们是在编译期间引入的,并且没有尝试像这样“减少”代码大小.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读