模板类的赋值运算符

时间:2011-10-23 16:07:18

标签: c++ templates operator-overloading

为了澄清,我引用James McNellis在the post "Template assignment operator overloading mystery"中的回答:

  

仍然会生成隐式声明的复制赋值运算符,该运算符声明如下:

Wrapper& operator=(const Wrapper&);

现在我有一个类似的类,想知道这个运算符的定义需要什么样的。

这是召回的课程:

template<typename T>
struct Wrapper;

现在的纠正匹配是什么:

template<typename T>
Wrapper& Wrapper<T>::operator=(const Wrapper&)

Wrapper& Wrapper::operator=(const Wrapper&)

或者这是一样的吗?

1 个答案:

答案 0 :(得分:2)

template<typename T>
Wrapper& Wrapper<T>::operator=(const Wrapper&)

这实际上只是

的简写
template<typename T>
Wrapper<T>& Wrapper<T>::operator=(const Wrapper<T>&)

另一个版本适用于名为Wrapper的非模板类,它对您的模板没有影响。