(转)运算符号重载

转载 2011年01月20日 10:28:00

// 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;
}

看源码学C++运算符重载(转)

“什么是运算符的重载”与“为什么要引入运算符重载?”这两个问题,在这里都不多说了,百度一下就都OK了 下面说了一下一些比较容易错的重载, 首先看看模板们是如何声明重载的 下是iterator 模...

运算符重载详解(转)

1.运算符重载定义: C++中预定义的运算符的操作对象只能是基本数据类型。但实际上,对于许多用户自定义类型(例如类),也需要类似的运算操作。这时就必须在C++中重新定义这些运算符,赋予已有运算符新的...

玩转C++运算符重载

运算符重载语法:返回值类型  operator 运算符(参数列表) {  代码逻辑。。。 } C++中的运算符重载是通过函数来实现的,可以将重载的运算符看作是类成的一个成员函数,向普通函数一样调用。如...
  • xyang81
  • xyang81
  • 2014年05月09日 09:28
  • 1757

C++复数定义和重载运算符

  • 2016年04月12日 20:02
  • 4KB
  • 下载

c++——运算符重载(四) 源码

  • 2015年09月09日 17:12
  • 1.85MB
  • 下载

单目运算符-作为成员重载

单目运算符-作为成员重载 #include "stdafx.h" #include using namespace std; //单目运算符重载 //M# #M ++a a++ //operato...

C++运算符重载

  • 2015年09月07日 20:40
  • 213KB
  • 下载

C++ 运算符重载

  • 2015年06月19日 14:52
  • 1.74MB
  • 下载

作业11: 类_运算符重载

作业11:  类_运算符重载1.设向量X = ( x1 ,x2 ,x3) 和 Y = ( y1 , y2 ,y3 ),则它们之间的加、减和积分别定义为:X + Y = ( x1 + y1 , x2 +...
  • neicole
  • neicole
  • 2011年07月13日 11:37
  • 2735

运算符重载

  • 2014年03月25日 22:01
  • 349KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:(转)运算符号重载
举报原因:
原因补充:

(最多只允许输入30个字)