码迷,mamicode.com
首页 > 编程语言 > 详细

C++ string copy的追根挖底!看看你理解的层度是那层

时间:2015-07-21 13:00:25      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:string   c++   

相信写过C++的人肯定用过:

string str2(“11”);

string str1 = str2;


现在就让我深入挖掘下string str1 = str2;所包含的内容。

第一层:

把str2的内容“11”复制给了str1

第二层:

先定义了str1对象,把str2对象赋值给str1

第三层:

string类型为什么能够赋值,原来string实现了赋值运算符重载。

  1. String & String::operate=(const String &other)  
  2. {  
  3.     if (this == &other)  
  4.         return *this;  
  5.     delete m_data;  
  6.     m_data = new char[strlen(other.data)+1];  
  7.     strcpy(m_data, other.data);  
  8.     return *this;   // 返回的是 *this的引用,无需拷贝过程  
  9. }  
第四层:

理解到string str1 = str2;的伪代码可以写为:

string str1;

str1.=(str2)

str1=str2的过程分析如下:

1、创建string&的临时变量tmp

2、调用赋值运算符重载函数

3、把str2、str1依次压栈,执行函数

4、返回值初始化tmp

5、销毁tmp

第五层:

我不理解:

  1. String & String::operate=(const String &other)  
这重载函数完全不需要返回值,为什么要返回!

请大神帮忙解释下!

版权声明:本文为博主原创文章,未经博主允许不得转载。

C++ string copy的追根挖底!看看你理解的层度是那层

标签:string   c++   

原文地址:http://blog.csdn.net/zp752963831/article/details/46981679

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!