模板化类的赋值操作符

Assignment-Operator for templated class

本文关键字:赋值操作符      更新时间:2023-10-16

为了澄清,我引用了James McNellis在帖子"模板赋值操作符重载之谜"中的回答:

仍然生成隐式声明的复制赋值操作符,声明如下:

Wrapper& operator=(const Wrapper&);

现在我有一个类似的类,并且想知道这个操作符的定义应该是什么样子的。

这是用于召回的类:

template<typename T>
struct Wrapper;

现在是什么校正匹配:

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

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

?

还是一样的?

This

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

其实就是

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

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