运算符重载

原创 2015年07月08日 14:51:56

1、赋值运算符=

2、等于运算符==

3、加法运算符+

4、前向自加运算符++

5、后向自加运算符++

6、下标运算符[ ]

7、输入输出运算符<< 和 >>

8、转换运算符( )

9、实例代码

  1. #include <stdio.h>    
  2. #include <stdlib.h>  
  3. #include <iostream>  
  4. using namespace std;  
  5.   
  6. class A;  
  7. ostream& operator<<(ostream &out,A &a);  
  8. istream& operator>>(istream &in,A &a);  
  9.   
  10. class A{  
  11. private:  
  12.     int b;  
  13. public:  
  14.     A(){b=10;}  
  15.     ~A(){}  
  16.   
  17.     // 加法  
  18.     A operator+(A&a)      
  19.     {    
  20.         A temp;  
  21.         temp.b=b+a.b;  
  22.         return temp;  
  23.     }  
  24.   
  25.     // 加等于  
  26.     A& operator+=(A&a)      
  27.     {    
  28.         b+=a.b;  
  29.         return *this;  
  30.     }  
  31.   
  32.     // 赋值  
  33.     A& operator=(A&a)  
  34.     {  
  35.         if (a!=*this)  
  36.         {  
  37.             b=a.b;  
  38.         }  
  39.         return *this;  
  40.     }  
  41.   
  42.     //相等  
  43.     bool operator==(A&a)  
  44.     {  
  45.         return b==a.b;  
  46.     }  
  47.   
  48.     // 前向++  
  49.     A operator++()  
  50.     {  
  51.         b++;  
  52.         return *this;  
  53.     }  
  54.     // 后向++   区别前向++,加了个int形参  
  55.     A operator++(int o)  
  56.     {  
  57.         A temp=*this;  
  58.         b++;  
  59.         return temp;  
  60.     }  
  61.   
  62.     // 转换函数-- 形参列表为空,并且无返回类型  
  63.     operator int()  
  64.     {  
  65.         return b;  
  66.     }  
  67.   
  68.     //利用有元函数(可以访问类的私有成员)重载输入输出流  
  69.     friend ostream& operator<<(ostream &out,A &a);  
  70.     friend istream& operator>>(istream &in,A &a);  
  71. };  
  72.   
  73. //有元函数重载输出流  
  74. ostream& operator<<(ostream &out,A &a)  
  75. {  
  76.     out<<a.b<<endl;  
  77.     return out;  
  78. }  
  79.   
  80. //有元函数重载输入流  
  81. istream& operator>>(istream &in,A &a)  
  82. {  
  83.     in>>a.b;  
  84.     return in;  
  85.   
  86. }  
  87.   
  88. int main()  
  89. {     
  90.     A a1;  
  91.     cout<<a1;  
  92.     A a2=a1++;  
  93.     cout<<a2;  
  94.     a2=++a1;  
  95.     cout<<a2;  
  96.     a2+=a1;  
  97.     cout<<a2;  
  98.     return 0;     
  99. }  

 

版权声明:本文为博主http://www.feixueteam.net原创文章,未经博主允许不得转载。

相关文章推荐

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

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

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

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

一个例子帮你搞懂C#语言高级特性系列(01) --- 运算符重载

演示了如何使用C#的运算符重载。

C++运算符重载

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

C++ 运算符重载

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

【C++基础之六】运算符的重载

网上太多有关运算符的重载了,但是写的太过的详细,不适合新手入门,特别是那什么++和--的前增量后增量重载,一元二元运算符重载,特殊运算符,下标运算符,new和delete,甚至是指针运算符的重载,吓退...

运算符重载

  • 2014年03月25日 22:01
  • 349KB
  • 下载

运算符重载详解

  • 2014年06月07日 22:08
  • 741KB
  • 下载

【c/c++】类型转换函数(类型转换运算符重载函数)

用转换构造函数可以将一个指定类型的数据转换为类的对象。但是不能反过来将一个类的对象转换为一个其他类型的数据(例如将一个Complex类对象转换成double类型数据)。 C++提供类型转换函数(ty...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:运算符重载
举报原因:
原因补充:

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