C++使用技巧:copy and swap idiom
2012-11-20 19:58
441 查看
Copy and Swap idiom
使用到著名的Big three中兩個特殊的成員函數(拷貝構造函數copy construction與賦值構造函數assignment constrcution). 作用在于在深拷贝的过程中保证强异常的作用,具体代码如下
使用到著名的Big three中兩個特殊的成員函數(拷貝構造函數copy construction與賦值構造函數assignment constrcution). 作用在于在深拷贝的过程中保证强异常的作用,具体代码如下
class Person { public: Person(int id, const char * pszName):_id(id), _pszName(new char[strlen(pszName) + 1]){strcpy(_pszName, pszName);} Person():_id(0) { _pszName = new char[1]; _pszName[0] = '\0'; } ~Person() { if (_pszName) delete _pszName; _pszName = nullptr; } int Id(void) const {return _id;} const char * Name(void) const {return _pszName;} Person(Person& rhs) { _id = rhs._id; _pszName = new char[strlen(rhs._pszName) + 1]; strcpy(_pszName, rhs._pszName); } Person& operator=(Person& rhs) { Swap(rhs); return *this; } private: void Swap(Person rhs) { std::swap(_id, rhs._id); std::swap(_pszName, rhs._pszName); } private: int _id; char * _pszName; };这里使用了RAII概念(局部变量退出作用域时触发析构函数),解决了自身赋值,强异常保证。
相关文章推荐
- C++使用技巧:copy and swap idiom
- C++的 copy-and-swap idiom 是什么
- 【C++深入探索】Copy-and-swap idiom详解和实现安全自我赋值
- 【C++深入探索】Copy-and-swap idiom详解和实现安全自我赋值
- 【C++深入探索】Copy-and-swap idiom详解和实现安全自我赋值
- C++ - 类的赋值操作 使用 "复制-交换(copy and swap) 技术" 详解
- C++ - 类的赋值操作 使用 "复制-交换(copy and swap) 技术" 详解
- Copy-and-swap idiom详解和实现安全自我赋值
- Why do we need the copy-and-swap idiom?
- What is the copy-and-swap idiom?
- C++中的异常安全、以及copy_and_swap
- C++异常安全、copy and swap
- What is the copy-and-swap idiom?
- Copy-and-swap idiom详解和实现安全自我赋值
- C++黑魔法系列2: lvalue, move constructor, copy and swap
- copy and swap技巧与移动赋值操作符
- C++ copy and swap (拷贝交换技术)
- Carbide.c++使用技巧及有用的插件
- c++使用技巧: 不要在构造函数/析构函数中调用虚函数
- 工程实战中的使用技巧——C++和C的相互调用