首页 > 代码库 > 利用结构体定义一个加法以及自定义输出

利用结构体定义一个加法以及自定义输出

原与紫书。


#include<cstdio>
#include<string>
#include<cmath>
#include<queue>
#include<vector>
#include<sstream>
#include<cstring>
#include<stdlib.h>
#include<iostream>
#include<algorithm>

using namespace std;

struct Point
{
    int x, y;
    Point( int x=0, int y=0 ) : x(x), y(y){} 
    //相当于Point( int x=0, int y=0 ) { this->x = x, this->y = y; }
};

Point operator + ( const Point& A, const Point& B )
{
    return Point( A.x+B.x, A.y+B.y );
}

ostream& operator << ( ostream &out, const Point& p )
{
    out << "(" << p.x << "," << p.y << ")";
    return out;
}

int main()
{
    Point a, b(1, 2);
    a.x = 3;
    cout << a+b << endl;
    return 0;
}


模板:




#include<cstdio>
#include<string>
#include<cmath>
#include<queue>
#include<vector>
#include<sstream>
#include<cstring>
#include<stdlib.h>
#include<iostream>
#include<algorithm>

using namespace std;

template <typename T>
struct Point
{
    T x, y;
    Point( T x=0, T  y=0 ) : x(x), y(y) {}
};

template <typename T>
Point<T> operator + ( const Point<T>& A, const Point<T>& B )
{
    return Point<T>( A.x + B.x, A.y + B.y );
}

template <typename T>
ostream& operator << ( ostream &out, const Point<T>& p )
{
    out << "(" << p.x << "," << p.y << ")";
    return out;
}

int main()
{
    Point<int> a(1, 2), b(3, 4);
    Point<double> c( 1.1, 2.2 ), d( 3.3, 4.4 );
    cout << a+b << " " << c+d << endl;
    return 0;
}