关闭

运算符重载

标签: vs2008
195人阅读 评论(0) 收藏 举报

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. }  

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:107654次
    • 积分:3064
    • 等级:
    • 排名:第11731名
    • 原创:208篇
    • 转载:14篇
    • 译文:0篇
    • 评论:5条
    最新评论