在构造函数中使用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;
}
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;
}
相关文章推荐
- C++:在构造函数中使用new时应该注意的事项
- 在构造函数中使用new的注意事项
- 在构造函数中使用new时应注意的事项
- 在构造函数中使用new时的注意事项
- C++ 构造函数中使用new时注意事项
- 在构造函数中使用new时应注意的事项
- 在构造函数中使用new时应注意的事项
- 在构造函数中使用new时应注意的事项、析构函数调用
- javascript中构造函数new使用的注意事项
- 在构造函数中使用new时应注意的事项
- JavaScript中的new的使用方法与注意事项
- c++的构造函数与析构函数区别和使用析构函数的注意事项g
- JavaScript中的new的使用方法与注意事项
- Hibernate查询,返回new对象(注意这个新定义的类要有构造函数),使用sql带条件分页查询并且把结果显示到一个对象的集里面的解决方案
- C++学习之使用new的注意事项
- C++构造函数中使用new时应注意的事项!
- Hibernate查询,返回new对象(注意这个新定义的类要有构造函数),使用sql带条件分页查询并且把结果显示到一个对象的集里面的解决方案
- new与delete函数使用方法以及注意事项
- C++构造函数中使用new时应注意的事项!
- C++学习之使用new的注意事项