В шаблонах С++ Полное руководство в разделе 5.3. Шаблоны членов, которые он написал:
Обратите внимание, что оператор присваивания шаблона не заменяет значение по умолчанию оператор присваивания. Для присвоений стеков того же типа оператор присваивания по умолчанию все еще вызывается.
Это правильно, потому что, когда я бежал ниже кода:
#include<iostream>
using namespace std;
template<typename T>
class Pair
{
public:
T pair1,pair2;
Pair(T i,T j):pair1(i),pair2(j){}
template<typename T1>Pair<T>& operator=(Pair<T1>&);
};
template<typename T>
template<typename T1>
Pair<T>& Pair<T>::operator=(Pair<T1>& temp)
{
this->pair1 =temp.pair1*10;//At this point
this->pair2=temp.pair2;
return *this;
}
int main()
{
Pair<int>P1(10,20);
Pair<int>P2(1,2);
P2=P1;
cout<<P2.pair1<<' '<<P2.pair2<<endl;
return 1;
}
Получил ответ 100 20.
Он не дал ответ назначения по умолчанию.
Является ли это типичной ошибкой в шаблонах С++ для полного руководства?
С++ Templates: Полное руководство Дэвидом Вандевоордом, Николаем М. Йосутис
Издатель: Addison Wesley
Дата публикации: 12 ноября 2002 г. ISBN: 0-201-73484-2 Страницы: 552