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
- C++ primer学习: string的= 的运算符重载
- C++primer学习:重载运算符(3)
- C++primer学习:重载运算符(4)
- 十九、运算符重载(三)String类的改进实现、[]运算符重载、+运算符重载、+=运算符重载、<<运算符重载、>>运算符重载
- C++primer学习:重载运算(1)
- C++primer学习:重载运算(2)
- [c++]String字符串类的运算符重载
- c++-运算符的重载
- C++--运算符的重载
- 类string运算符的重载
- string类的运算符重载
- C++ Primer 学习4:string类使用重载操作符+的注意
- <<C++ Primer>>中文版 重载箭头运算符的理解
- [C/C++]运算符的重载
- 【C++】String类中的运算符重载
- C#-运算符的重载范例
- 【c++】实现运算符的重载
- [c++]复数的运算符重载
- 回顾博客
- c语言return;返回什么
- 黑马程序员_7k面试题—交通灯
- android 4.4 下载文件
- POJ 1679 The Unique 次最小生成树 MST
- C++ primer学习: string的= 的运算符重载
- 远程桌面如何设置才能只运行某个程序而不运行桌面
- 2013之收获篇
- Number Sequence
- 网络流基本概念及求法
- SGU116 动态规划 DP
- R语言之非参数检验篇
- 从沙子到芯片的艺术
- Python中实现多属性排序