C++ 构造函数中使用new时注意事项
发布时间:2020-12-16 05:13:25 所属栏目:百科 来源:网络整理
导读:使用new初始化对象中的指针成员时遇到的问题 在构造函数中使用new初始化指针成员,那么析构函数中就必须使delete,并且new对应delete, new[]则对应于delete[]。 在有多个构造函数的情况下,必须以相同的方式使用new,要不用new,要不用new[],因为只存在一
使用new初始化对象中的指针成员时遇到的问题 在构造函数中使用new初始化指针成员,那么析构函数中就必须使delete,并且new对应delete, new[]则对应于delete[]。 在有多个构造函数的情况下,必须以相同的方式使用new,要不用new,要不用new[],因为只存在一个析构函数,所有的构造函数都必须与虚构函数相兼容。 PS. 当然在构造函数中使用new初始化指针的时候,可以把指针初始化为空(0/NULL 或者是C++11中的nullptr),因为delete不管有没带[]都与空指针兼容。 需要自行定义一个复制构造函数和赋值构造函数,用深复制的方式把一个对象初始化给另一个对象,一个对象复制给另一个对象,如下: 复制构造函数:
String:String(const String & st) { num_Strings++; len = st.len; str = new char[len+1]; std::strcpy(str,st.str); } 赋值构造函数:
String & String:operator=(const String & st) { if(this == &st) return *this; else delete [] str; len = st.len; str = new char[len+1]; std::strcpy(str,st.str); return *this; } 以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持编程小技巧! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |