您的位置:首页 > 其它

在构造函数中使用new时应注意的事项

2010-10-18 15:24 573 查看
1,如果在构造函数中使用new来初始化对象的指针成员时,应在析构函数中使用delete

 2 ,new和delete要兼容。new对应与delete new[]对应与delete[]

3, 如果有多个构造函数,则必须以相同的方式使用new 要么都带括号,要么都不带,因为只有一个析构函数,因此所有的构造方法要兼容。不过可以在一个构造函数中使用new来初始化指针,而在另一个构造函数中将指针初始化为空(null或者0)这是应为delete可以用于空指针

4,应定义一个复制构造函数,通过深度复制函数将一个对象初始化为另一个对象,通常这种构造函数与下面类似

   String::String(const String & st)

     {

         len =st.len;

         str= new char[len +1];

       std::strcpy(str,st.str0:

  

     }

 

5具体的说,复制构造函数应分配足够的空间来存储复制的数据,并复制数据,而不仅仅是数据的地址,还更新所有的受影响的静态类成员

6,应当定义一个赋值操作符,通过深度复制将一个对象复制给另一个对象,通常与下面类似

   String &  String::operator =(const String &str)

    {

         if(this ==&str) return *this;

        delete [] this->str;

 

        len =str.len;

        this->str =new char[len+1];

        std::strcpy(this->str,str.str);

        return * this;

 

        }

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  delete string null 存储