您的位置:首页 > 编程语言 > C语言/C++

c++重载<, +, +=, =, ==, <<, >>等符号

2014-12-31 14:29 239 查看
来源:blog.sina.com.cn/s/blog_6b21f9ce0100lln1.html

以下示例中定义了一个class test, 重载了<, +, +=, =, ==, <<, >>等符号:



#include<iostream>

#include<vector>

using namespace std;

class test{

public:

int v;

test():v(0){}

test(const int &a):v(a){}

test(const test &t1):v(t1.v){}

//比较两个对象的大小

bool operator<(const test &t1) const{

return (v < t1.v);

}

//比较对象和int的大小

bool operator<(const int &t1) const{

return (v < t1);

}

//友元函数,比较int和对象的大小

friend inline bool operator<(const int &a, const test & t1){

return (a < t1.v);

}

//对象间赋值

test & operator=(const test &t1){

v = t1.v;

return *this;

}

//int赋值给对象

test & operator=(const int &t1){

v = t1;

return *this;

}

//对象加上 int

test operator+(const int & a){

test t1;

t1.v = v + a;

return t1;

}

//对象加对象

test operator+(test &t1){

test t2;

t2.v = v + t1.v;

return t2;

}

//对象加上对象

test &operator+=(const test &t1){

v += t1.v;

return *this;

}

//对象加上int

test &operator+=(const int &a){

v += a;

return *this;

}

//对象==对象

bool operator==(const test &t1)const{

return (v == t1.v);

}

//对象==int

bool operator==(const int &t1)const{

return (v == t1);

}

friend inline ostream & operator << (ostream & os, test &t1){

cout << "class t(" << t1.v << ")" << endl;

return os;

}

friend inline istream & operator >> (istream & is, test &t1){

cin >> t1.v;

return is;

}

};

int main(){

test t0, t1(3);

test t2(t1);

cout << t0 << t1 << t2;

cin >> t1;

t2 = t1;

t2 += t1;

t1 += 10;

cout << t2;

if(t1 < t2) cout << "t1 < t2";

else if(t1 == t2) cout << "t1 = t2";

else cout << "t1 > t2";

cout <<endl;

system("pause");

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: