赋值重载函数

1.关于赋值运算符的重载
写代码时注意以下几点:
1.函数返回值
要把函数返回值声明为该类型的引用,则才可以连续赋值
2.函数形参
把传入参数的类型声明为常量引用,可提高代码效率,
原因:否则,从形参到实参会调用一次拷贝构造,且在赋值运算符函数内不改变传入对象的状态,所以在传入的引用参数前加const
3.判断传入的参数和当前的对象(*this)是不是同一个对象
若为同一个,一旦释放自身内存,传入参数的内存也被释放了,则找不到需要赋值的内容了
4.分配新内存之前要释放对象自身已有的内存,否则会造成内存泄漏(之后总结)
5在函数结束前返回对象自身的引用(*this)(这样才能连续赋值);
代码如下
CMyString & CMyString::operator=(const CMyString& str)
{
     if (this == &str)
     {
          return *this;
     }
     delete mpData;
     mpData = NULL;
     int len = strlen(str.mpData);
     mpData = new char[len + 1];
     //strcpy(mpData, str.mpData);
     for (int i = 0; i <= len; ++i)
     {
           mpData[i] = str.mpData[i];
     }
     return *this;
}

2关于输出函数的重载问题(后续再补充)
代码段
friend ostream& operator<< (ostream &out, const CMyString &str)
 {
           cout << str.mpData << endl;
           return out;
  }
     

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值