演算子のオーバーロードをすることができる機能.

=,+,*,/など演算子に機能を割り当てることができる.

#include<iostream>
template <typename T> class TYPE
{
    private:
        T data;
    public:
        TYPE(){};
        TYPE(T val){this->data=val;};
        TYPE& operator = (T val){this->data=val;return *this;};
        TYPE& operator = (TYPE val){this->data=val;return *this;};
        TYPE operator ++(){++this->data; return this->data;};//単項演算子
        TYPE operator + (T val){return  this->data + val;};//
        TYPE operator * (T val){return  this->data * val;};
        TYPE operator / (T val){return  this->data / val;};
        operator T(){return data;};
        ~TYPE(){};
};
int main()
{
    TYPE<double> a=1;
    TYPE<double> b=2;
    std::cout << ++b << std::endl; 
    std::cout << a+b << std::endl; 
    std::cout << a*b << std::endl; 
    std::cout << a/b << std::endl; 
    return 0;
}