テンプレート、演算子のリロード、メンバー

3549 ワード

#include <iostream>

using namespace std;



template <typename T>

class A {

public:

    T x, y;

public:

    A<T> operator-(const A<T> &t);



    template<typename T>

    friend A<T> operator+(const A<T> &x, const A<T> &y);

public:

    A();

    A(T t);

};



template <typename T>

A<T> A<T>::operator-( const A<T> &t )

{

    A<T> z;

    z.x = x + t.x;

    z.y = y + t.y;

    return z;

}



template<typename T>

A<T>::A()

{

}





template<typename T>

A<T>::A(T t)

 {

    x = t;

    y = t;

}





template<typename T>

A<T> operator+(const A<T> &x, const A<T> &y) {

    A<T> z;

    z.x = x.x + y.x;

    z.y = x.y + y.y;

    return z;

}



int main() {

    A<double> a = 1;        //  

    A<double> b = a + A<double>(1);    //  

    //A<double> c = a + 1; //  

    A<double> d = a - 1;    //  

    system("pause");

}