【C++】深拷贝
2015-09-19 14:54
288 查看
<span style="font-size:18px;">#include<iostream> using namespace std; class String { public: //无参构造函数 String() :_ptr(new char[1]) { _ptr[0] = '\0'; } //有参构造函数 String(char* ptr) :_ptr(new char[strlen(ptr)+1]) { strcpy(_ptr, ptr); } //交换函数,主要用来优化代码 void Swap(String& s) { char* tmp = s._ptr; s._ptr = _ptr; _ptr = tmp; } //析构函数 ~String() { delete[] _ptr; } //拷贝复制函数 String(const String& s) :_ptr(NULL) { String tmp(s._ptr); Swap(tmp); } //赋值操作符的重载 String& operator=(const String& s) { if (this != &s) { String tmp(s._ptr); Swap(tmp); } return *this; } void Print() { cout << _ptr << endl; } private: char* _ptr; }; int main() { String s1="abcd"; String s2(s1); String s3; s3 = s1; s1.Print(); s2.Print(); s3.Print(); return 0; } </span>
相关文章推荐
- c++函数重载笔记
- c++有默认参数的函数——笔记
- c++如何将vector<char>转化成string
- c++ for_each 实现原理英文原版转载( Conditional Love: FOREACH Redux)
- 归并排序的原理,c++代码实现
- C++内置函数(inline function)概念
- C++语句:vector<string>v_string;是什么意思?v_string代表什么?
- 红黑树C++实现
- 关于C++的接口类
- VC++ unicode下读取unicode CFile::typeUnicodetxt的数据
- 黑马程序员独特的放松方式 "小巧玲珑的C语言游戏--井字游戏"
- 【c++ templates读书笔记】【1】函数模板
- 【c++ templates读书笔记】【1】函数模板
- C/C++:C++友元类
- C语言冒泡排序法
- C++成员变量的初始化顺序问题
- Item 31:最小化文件之间的编译依赖 Effective C++笔记
- C语言 printf 格式化 输出 右对齐补零
- c++程序设计原理与实践---(3)类的派生和虚函数
- 1.c++中与oc中类和对象创建及访问