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> ;,那么foo< double>和foo< char>然后会有3个不同的addStuff,clear和setName函数.那是因为会有3个不同的类.模板是编译时实体.它们是在编译期间引入的,并且没有尝试像这样“减少”代码大小.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |