C++重载操作符

为解决fan125849143在百度知道上的提问:http://zhidao.baidu.com/question/73152641.html

现写了操作符重载示例,如下:

  1. //在vc6下编译通过 
  2. //修改:qmroom 
  3. //2008-10-25 23:15 
  4. //blog:http://blog.csdn.net/qmroom 
  5. //Email:qmroom#126.com        #=@ 
  6. #include <iostream.h> 
  7. #include <string.h> 
  8. #include <assert.h> 
  9. class com 
  10. private
  11.     char *str; 
  12. public
  13.     com() : str(NULL) {} 
  14.     com(const com &c) : str(NULL) 
  15.     { 
  16.         *this = c;    //或者 this->operator=(c); 
  17.     } 
  18.     com(const char *pstr) : str(NULL) 
  19.     { 
  20.         *this = pstr;    //或者 this->operator=(pstr); 
  21.     } 
  22.     ~com() 
  23.     { 
  24.         delete []str; 
  25.     } 
  26. public:  
  27.     com &operator=(const com &c1) 
  28.     { 
  29.         *this = c1.str;    //或者 this->operator=(c1.str); 
  30.         return *this
  31.     } 
  32.     com &operator=(const char *pstr) 
  33.     { 
  34.         if (str) 
  35.             delete []str; 
  36.         if (!pstr) 
  37.         { 
  38.             str = NULL; 
  39.             return *this
  40.         } 
  41.         str=new char[strlen(pstr)+1]; 
  42.         assert(str!=NULL); 
  43.         strcpy(str, pstr); 
  44.         return *this
  45.     } 
  46.     com operator+(const com &c1) const 
  47.     { 
  48.         char *p=new char[strlen(str)+strlen(c1.str)+1]; 
  49.         assert(p!=NULL); 
  50.         strcpy(p, str); 
  51.         strcat(p, c1.str); 
  52.         com myCom(p); 
  53.         delete []p; 
  54.         return myCom; 
  55.     } 
  56.     void print() const  
  57.     { 
  58.         cout<<str<<endl; 
  59.     } 
  60. }; 
  61. void main()  
  62.     char *p1="aaa"
  63.     char *p2="bbb"
  64.     com a(p1),b(p2),c; 
  65.     c=a+b; 
  66.     c.print(); 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值