我觉得,既然是构造函数,那么说明之前没有这个对象,m_data还没分配空间,就不用delete了吧?
如果写上运行没错,但是没有必要吧。
当然要删除了,请看
[CODE]
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str1 = "string 1";
string str2 = "string 2 string 2";
str1 = str2;
cout<<str1<<endl;
return 0;
}
[/CODE]
str1原来有值,即m_data不为空,并且大小为strlen[m_data]。
str2的内容要多于str1,即其m_data的长度要大于str1的m_data的长度。
因此如果要将str2赋值给str1时,就必须扩展str1的m_data数组的大小,以适应str2。
合理的办法是将原有的数组清除,并重新创建大小与str2相同的数组,这样即高效又安全。挺好。
至于,拷贝构造函数为什么没有删除,正如4楼所说的。