Оператор преобразования типа в классе шаблона - вызывается независимо от явного

У меня есть этот код.В основном я хочу использовать преобразование типов, но, используя отладку, я понимаю, что в этой строке ob2 = (Point2D ) ob1;

конструктор шаблон Point2D (Point2D & ob) вызывается независимо от явного перед ie шаблон <класс T1> явный Point2D (Point2D & ob) Почему это происходит? Я ожидаю, что будет вызван оператор Point2D () .

template <class T>
class Point2D
{
public:
    T x;
    T y;
    Point2D(T _x=0,T _y=0):x(_x),y(_y)
    {
    }
    Point2D(Point2D& ob)
    {
        x=ob.x;
        y=ob.y;
    }
    template <class T1>
    Point2D(Point2D<T1>& ob)
    {
        x=ob.x;
        y=ob.y;
    }
    template <class T1>
    operator Point2D<T1>()
    {
        return Point2D<T1>(x,y);
    }
};
int main()
{
    Point2D<int> ob1(10,10);
    Point2D<double> ob2(20,20);
    ob2=(Point2D<double>)ob1;
    return 0;
}
5
задан Pubby 11 December 2011 в 13:48
поделиться