重载operator =里面的模板类

时间:2011-08-09 03:05:15

标签: c++ templates

template<typename T> ClassA
{
    ...
    ClassA& operator=(const ClassA&);

    ...
};

// case one:
template<typename T>
ClassA<T>& ClassA<T>::operator=(const ClassA &rhs)
{ ... }

// case two:
template<typename T>
ClassA<T>& ClassA<T>::operator=(const ClassA<T> &rhs)
{ ... }

我认为案例一是正确的。

问题&GT;为什么我们不必在函数参数列表中使用ClassA<T>,例如两个?

2 个答案:

答案 0 :(得分:2)

如您所见,任何一个版本都可以使用。

一旦我们通过了ClassA<T>::的{​​{1}}部分,它的行为就像我们在课堂上一样。例如,操作员可以访问该类的所有成员。

您必须指定返回值的全名,因为此时我们仍然不知道这是一个成员函数(或运算符)。

答案 1 :(得分:0)

它隐含在函数参数范围内(但不在返回类型中)。另请参阅使用嵌套类作为参数类型。