关闭

(转)运算符号重载

标签: classos
666人阅读 评论(0) 收藏 举报

// chongzai.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"


#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 /* t1 > t2*/ cout << "t1 > t2";
 cout <<endl;
 system("pause");
 return 0;
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:37437次
    • 积分:466
    • 等级:
    • 排名:千里之外
    • 原创:4篇
    • 转载:20篇
    • 译文:0篇
    • 评论:1条
    文章分类
    文章存档
    最新评论
  • 浮点数比较大小

    whhit001: 另外对于a和b大小是10000这样的数据的时候,它也不合适,因为10000和10001也可以认为是相...