c++ - 模板类的赋值运算符

标签 c++ templates operator-overloading

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

The implicitly-declared copy assignment operator, which is declared as follows, is still generated:

Wrapper& operator=(const Wrapper&);

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

这是召回类:

template<typename T>
struct Wrapper;

现在的校正匹配是什么:

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

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

?

还是这只是一样?

最佳答案

这个

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

这实际上只是

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

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

关于c++ - 模板类的赋值运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7867320/

相关文章:

c++ - 分配二维可变大小的数组

C++:控制台窗口有奇怪的边框..?

c++ - 如果重载 operator== 是否还需要重载 operator!=?

c++ - 当我在 on_read 上看到错误时,我应该清理 bread::flat_buffer 吗?

c++ - 模板基类 typedef 成员不可见

Java 泛型 : Wildcard capture compilation error

c++ - 使用 gTest 测试多个模板函数

python - 覆盖内置对象的运算符

c++ - 赋值运算符(字符串)右侧的类型是什么?

c++ - 有哪些用于非 MFC、Win32 C++ 应用程序的 *slick* UI 库/框架/工具?