C++ String 深拷贝(传统写法+现代写法)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ String 深拷贝(传统写法+现代写法)相关的知识,希望对你有一定的参考价值。
//C++String 类的常规写法 #include <iostream> using namespace std; class String { public: //构造函数 String(char*str = "") :_str(new char[strlen(str) + 1]) { strcpy(_str, str); } //拷贝构造 String(const String &s) { _str = new char[strlen(s._str) + 1]; strcpy(_str, s._str); } //operator=的重载 String&operator=(const String &s) { if (this != &s) { /*delete[]_str; _str = new char[strlen(s._str) + 1]; strcpy(_str, s._str);*/ char*tmp = new char[strlen(s._str) + 1]; strcpy(tmp, s._str); delete[]_str; _str = tmp; } return *this; } //析构函数 ~String() { if (_str) { delete[]_str; } } char *CStr() { return _str; } char& operator[](size_t index) { return _str[index]; } private: char*_str; }; //C++String类的现代写法 #include <iostream> using namespace std; class String { public: String(char*str="") :_str(new char[strlen(str)+1]) { strcpy(_str, str); } String(const String&s) :_str(NULL) { String tmp(s._str); swap(_str, tmp._str); } String&operator=(const String &s) { if(this != &s) { String tmp(s._str); swap(_str, tmp._str); } return *this; } //对 operator= 优化 String&operator=(String s) { swap(_str, s._str); return *this; } ~String() { if (_str) { delete[]_str; } } char *CStr() { return _str; } char& operator[](size_t index) { return _str[index]; } private: char*_str; };
本文出自 “printf的返回值” 博客,请务必保留此出处http://10741125.blog.51cto.com/10731125/1754454
以上是关于C++ String 深拷贝(传统写法+现代写法)的主要内容,如果未能解决你的问题,请参考以下文章
C++初阶:string类string类 | 浅拷贝和深拷贝(传统写法和现代写法) | string类的模拟实现
C++初阶:STL —— stringstring类 | 浅拷贝和深拷贝(传统写法和现代写法) | string类的模拟实现
C++初阶:STL —— stringstring类 | 浅拷贝和深拷贝(传统写法和现代写法) | string类的模拟实现