写String类的普通构造函数,析构函数,拷贝构造函数和赋值函数

编写类String的构造函数、析构函数和赋值函数,已知类String的原型为: 


class  String 

 

 public:   

  String(const  char  *str  NULL);  //  普通构造函数   

  String(const  String  &other);  //  拷贝构造函数   

  ~  String(void);  //  析构函数   

  String  operate  =(const  String  &other);  //  赋值函数   

 private:   

  char  *m_data;  //  用于保存字符串   

};   

  解答: 

//普通构造函数 

String::String(const  char  *str)   



 if(str==NULL)   

 { 

  m_data  new  char[1];  //  得分点:对空字符串自动申请存放结束标志'\0'的空 

  //加分点:对m_data加NULL  判断 

  *m_data  '\0';   

 }   

 else 

 { 

  int  length  strlen(str);   

  m_data  new  char[length+1];  //  若能加  NULL  判断则更好   

  strcpy(m_data,  str);   

 } 



//  String的析构函数 

String::~String(void)   



 delete  []  m_data;  //  或delete  m_data; 



//拷贝构造函数 

String::String(const  String  &other)     //  得分点:输入参数为const型 

 

 int  length  strlen(other.m_data);   

 m_data  new  char[length+1];      //加分点:对m_data加NULL  判断 

 strcpy(m_data,  other.m_data);   



//赋值函数 

String  String::operate  =(const  String  &other)  //  得分点:输入参数为const型 


 

 if(this  ==  &other)    //得分点:检查自赋值 

  return  *this;   

 delete  []  m_data;      //得分点:释放原有的内存资源 

 int  length  strlen(  other.m_data  );   

 m_data  new  char[length+1];   //加分点:对m_data加NULL  判断 

 strcpy(  m_data,  other.m_data  );   

 return  *this;          //得分点:返回本对象的引用 

 


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值