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

原与紫书。



#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

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
#include
#include
#include
#include
#include
#include
#include
#include
#include

using namespace std;

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

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

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

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





你可能感兴趣的:(★,模板)