您的位置:首页 > 其它

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

2014-08-11 15:28 411 查看
原与紫书。

#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐