C++ primer学习: string的= 的运算符重载

来源:互联网 发布:返利软件有哪些 编辑:程序博客网 时间:2024/04/30 20:42

C++primer 112页,看到string对象的赋值操作,就想起了 = 的运算符重载

考虑字符串的基本类型的用法

1. char * str1 = “hello”;

2. char * str2 = str1;

3.  str3 = str2 = “hello”;//可以连续赋值


实现代码如下:

String& String::operator=(const String& other){//判断是否指向同一块内存空间if(this == &other)return *this;//先做异常处理int length = strlen(other);char * data = new char[length + 1];if(!data)throw"memory error";//开始处理 =delete[] m_data;m_len =length;m_data = data;strncpy(m_data,other.m_data,m_len);return *this;}



这份代码的实现,先对异常处理,保证当前对象安全的情况下,再做正常处理。
局部变量length,data的存在,就是保证当前对象的完整性。
这样即使
char * data = new char[length + 1];
分配内存失败,直接catch来处理, 也不会影响我当前string对象的正常析构。

0 0
原创粉丝点击