1、如果在构造函数中使用new来初始化指针成员,则应在析构函数中使用delete。
2、new和delete必须相兼容。new对应于delete,new[]对应于delete[]。
3、若有多个构造函数,则必须以相同的方式使用new,要么都带中括号,要么都不带。
4、应定义一个复制构造函数,通过深度构造函数,通过深度复制将一个对象初始化为另一个对象。类似下面代码:
String::String(const String & st)
{
num_string++;
len = st.len;
str = new char[len + 1];
std::strcpy(str, st.str);
}
5、应当定义一个赋值运算符,通过深度复制将一个对象复制给另一个对象。
6、析构函数的调用和类的对象有关,当类的对象为静态变量时,析构函数在主程序结束之后调用。当类对象是new申明的动态变量时,析构函数在其调用了delete之后调用。当类对象是申明的自动变量时,当该变量的作用域结束之后便调用析构函数。