String的浅拷贝
来源:互联网 发布:三国杀风火林山淘宝 编辑:程序博客网 时间:2024/04/29 08:10
class String{public: String(const char* str="") :_str(new char[strlen(str) + 5]) { cout << "String()" << endl; _str += 4; _GetRefCount(_str) = 1; strcpy(_str, str); } String(const String& s) :_str(s._str) { ++_GetRefCount(_str); } ~String() { cout << "~String()" << endl; _Release(); } String& operator=(const String& s) { if (_str != s._str) { _Release(); _str = s._str; ++_GetRefCount(_str); } return *this; } char& operator[](int index)//不写现代写法 { if (_GetRefCount(_str) > 1) { char* tmp = new char[strlen(_str) + 5]; tmp += 4; _GetRefCount(tmp) = 1; strcpy(tmp, _str); --_GetRefCount(_str); _str = tmp; } return _str[index]; } int GetRefCount() { return _GetRefCount(_str); } char* C_str() { return _str; }private: int& _GetRefCount(char* str) { return *(int *)(str - 4); } void _Release() { if (--_GetRefCount(_str) == 0) { delete[] (_str-4);//注意指针的位置 } }private: char* _str;}
0 0
- String的浅拷贝
- String类的浅拷贝,深拷贝
- string类的浅拷贝,深拷贝,写实拷贝
- String类的拷贝(浅拷贝,深拷贝,写时拷贝)
- String类的浅拷贝和深拷贝
- String类的浅拷贝与深拷贝
- string类的简单实现(深拷贝,浅拷贝)
- C++——string的深拷贝与浅拷贝
- 对string深拷贝浅拷贝的理解剖析
- String类的实现(深拷贝or浅拷贝)
- String类引用计数的浅拷贝
- string类的浅拷贝优化1
- String的深拷贝
- 浅拷贝版string
- String类的自我认知(浅拷贝、深拷贝、写时拷贝)
- String类的浅拷贝、深拷贝、引用计数、写时拷贝
- 面试题:String类的浅拷贝、深拷贝、写时拷贝
- 【C++】String拷贝(包含深拷贝浅拷贝)以及拷贝构造函数中几种调用的情况
- 401 - 未授权: 由于凭据无效,访问被拒绝。
- 客户端-服务器-代理模型
- 2016MUTC9-1009 Intersection is not allowed!
- 输入框自动匹配控件AutoCompleteTextView
- 中医用药 VS 团队管理,一味药就是一名员工,知其药性,才能用好
- String的浅拷贝
- Python 流程控制之while
- 占位
- 占位
- 占位
- 占位
- 占位
- 占位
- 占位