[求助]请分析一下String类中的赋值函数。
请版主帮忙分析一下String类中的赋值函数,问题如图中红批所示。。ths!!:)
当然要删除了,请看
[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楼所说的。