C++中重载赋值运算符应该注意的地方

时间:2014-02-27 02:09:03   收藏:0   阅读:596
C++中自定义的类一般都会重载赋值运算函数,重载时候应该注意一下几点:

1. 返回类型
2. 参数
3. 释放实例自身已有的类型,防止内存泄露;

4. 考虑当因内存不足在new char时候抛出异常
以string为例,以下为两个版本的重载赋值运算符的代码:
string& string::operator=(const string& str){
      if( this==&str )
            return *this;
      delete []data;
      m_data = null;
      m_data = new char[ strlen(str.data)+1] ;
       strcpy(data, str.data);
       return *this;
}
delete后防止因空间不足导致new char失败导致的异常;
string& string::operator=(const string& str){
     if( this != &str){
          string temp(str);
          char *p = temp.data;
          temp.data = data;
          data = p;
      }
      return *this;
}

Reference
《effective c++》 item 5 -- 12

C++中重载赋值运算符应该注意的地方,布布扣,bubuko.com

原文:http://blog.csdn.net/swagle/article/details/19966557

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!