9月3日 C++

include <iostream>                                          
include <cstring>
sing namespace std;

lass Stu

   public:
       //无参构造函数
       Stu()
       {
           a=nullptr;
           len=0;
       }
       //有参构造函数
       Stu(const char *s)
       {
           if(s!=nullptr)
           {
               len=strlen(s);
               a=new char[len+1];
               strcpy(a,s);
           }
           else
           {
               a=nullptr;
               len=0;
           }
       }
       //析构函数
       ~Stu()
       {
           delete []a;
           a=nullptr;
       }
       //拷贝构造函数
       Stu (const Stu& other)
       {
           len=other.len;
           a=new char[len+1];
           strcpy(a,other.a);
       }
       //拷贝赋值函数
       Stu& operator=(const Stu& other)
       {
           if(&other!=this)
           {
               len=other.len;
               if(a==nullptr)
               {
                   a=new char[len+1];
               }
               strcpy(a,other.a);
           }
           return *this;
       }
       const char *data()
       {
           if(a!=nullptr)
           {
           char *s=nullptr;
           s=a;
           return s;
           }
           else
           {
               cout << "空字符串无法展示" << endl;
               return nullptr;
           }
       }
       //连接字符串
       const Stu operator+(Stu &R) const
       {
               Stu x;
           if(a!=nullptr&&R.a!=nullptr)
           {
           x.len=len+R.len;
           x.a=new char[len+1];
           strcpy(x.a,a);
           strcat(x.a,R.a);
           return x;
           }
           else
           {
               cout << "空字符串无法拼接" << endl;
               return x;
           }
       }
       //不等于
       const bool operator!=(Stu &R)const
       {
           if((a!=nullptr)&&(R.a!=nullptr))
           {
               if(strcmp(a,R.a)==0)
                   return 0;
               else
                   return 1;
           }
           else
           {
               cout << "字符串不存在" << endl;
               return 0;
           }
       }
       //等于
       const bool operator==(Stu &R)const
       {
           if(strcmp(a,R.a)==0)
               return 1;
           return 0;
       }
       //小于
       const bool operator<(Stu &R)const
       {
           int x=strcmp(a,R.a);
           if(x<0)
               return 1;
           else
               return 0;
       }
       //小于等于
       const bool operator<=(Stu &R)const
       {
           int x=strcmp(a,R.a);
           if(x<0||x==0)
               return 1;
           return 0;
       }
       //大于
       const bool operator>(Stu &R)const
       {
           int x=strcmp(a,R.a);
           if(x>0)
               return 1;
           return 0;
       }

       //大于等于
       const bool operator>=(Stu &R)const
       {
           int x=strcmp(a,R.a);
           if(x>0||x==0)
               return 1;
           return 0;
       }
       //size
       const int size()const
       {
           return strlen(a);
       }
   friend ostream& operator<<(ostream&L,const Stu&R);
   friend istream& operator>>(istream& L, Stu& R);

   private:
       char *a;
       int len;
;
stream& operator<<(ostream& L, const Stu&R)
   {
       L <<"字符串="<< R.a <<"长度=" << R.size() <<endl;
       return L;
   }

   istream& operator>>(istream& L, Stu& R)
   {
       cout<<"请输入\n";
       L >>R.a;
       return L;
   }

nt main(int argc, const char *argv[])

   Stu s1("hello");
   Stu s2("hell");
   Stu s3;
   s3=s1+s2;
   cout << "s3=" << s3.data() << endl;

   bool ret=s1!=s2;
   cout << "s1!=s2 " << ret << endl;

   ret=s1==s2;
   cout << "s1==s2 " << ret << endl;

   ret=s1<s2;
   cout << "s1<s2 " << ret << endl;

   ret=s1<=s2;
   cout << "s1<=s2 " << ret << endl;

   ret=s1>s2;
   cout << "s1>s2 " << ret << endl;

   ret=s1>=s2;
   cout << "s1>=s2 " << ret << endl;

   cin>>s3;
   cout <<s3;

   return 0;

                                                            
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值