C++ string copy的追根挖底!看看你理解的层度是那层
来源:互联网 发布:java项目http转https 编辑:程序博客网 时间:2024/05/11 15:05
相信写过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)
请大神帮忙解释下!
0 0
- C++ string copy的追根挖底!看看你理解的层度是那层
- 程序员的十层楼,看看你在哪一层
- Copy的那点事儿~
- string copy的用法
- String copy的实现
- C程序设计伴侣 : 帮你更好地理解谭浩强老师的那本书以及更多
- [C++]String类的理解
- 看看你的殺毒軟件有多強!
- 看看你的级别
- 看看你的星座
- 看看你的智商
- 程序员的十层楼,搞开发的朋友们看看你你在几层?
- iOS Copy的理解
- [C++/STL] string字符串关于copy函数的C4996错误
- [C++/STL] string字符串关于copy函数的C4996错误
- 看看你比较赞同那几条?别人发给我的,觉得很有意思!
- 【转帖】你真的想看明白《穆赫兰道》那就好好看看下面这篇文章吧
- 看看你的C语言到底什么水平吧
- 提升方法
- AM335X Nand Flash 启动调试
- oracle中merge into的用法
- 移动方法
- hadoop-2.2.0安装方法详解
- C++ string copy的追根挖底!看看你理解的层度是那层
- PL/SQL相关的数据字典
- 修改分隔符之后不能正常使用hasNextInt()函数
- 系统集成项目管理工程师(软考中级)已过,写写经历
- 一个对象实例化过程
- [Tip] Install OpenCV3.0.0 for python3.4.3 under ubuntu15.04
- Mac OS X上使用Wireshark抓包
- OpenGL关于二维变换的例子
- poj 3087 Shuffle'm Up