相信写过C++的人肯定用过:
string str2(“11”);
string str1 = str2;
现在就让我深入挖掘下string str1 = str2;所包含的内容。
第一层:
把str2的内容“11”复制给了str1
第二层:
先定义了str1对象,把str2对象赋值给str1
第三层:
string类型为什么能够赋值,原来string实现了赋值运算符重载。
- String & String::operate=(const String &other)
- {
- if (this == &other)
- return *this;
- delete m_data;
- m_data = new char[strlen(other.data)+1];
- strcpy(m_data, other.data);
- return *this; // 返回的是 *this的引用,无需拷贝过程
- }
理解到string str1 = str2;的伪代码可以写为:
string str1;
str1.=(str2)
str1=str2的过程分析如下:
1、创建string&的临时变量tmp
2、调用赋值运算符重载函数
3、把str2、str1依次压栈,执行函数
4、返回值初始化tmp
5、销毁tmp
第五层:
我不理解:
- String & String::operate=(const String &other)
请大神帮忙解释下!