【C++】实现一个简洁版的class String
2015-07-10 10:28
477 查看
//实现一个简洁版的class String #include <iostream> #include <string.h> using namespace std; class String { public: String() { _str = new char[1]; _str[0] = '\0'; } String(const char *str) { _str = new char[strlen(str) + 1]; strcpy(_str, str); } String(const String &s) { _str = new char[strlen(s._str) + 1]; strcpy(_str, s._str); } String& operator=(const String &s) { /*if (this != &s) //普通方法有缺陷 { delete[] _str; _str = new char[strlen(s._str) + 1]; strcpy(_str, s._str); } return *this; */ if (&s != this) //异常安全的神赋值 { String tmp(s._str); swap(_str, tmp._str); } return *this; } ~String() { if (_str) delete[] _str; } void print() { cout << _str << endl; } private: char * _str; }; int main() { String s1; String s2("abcdef"); String s3(s2); String s4 = s3; s1 = s2; s1.print(); s2.print(); s3.print(); s4.print(); return 0; }
相关文章推荐
- 关于C++子类父类成员函数的覆盖和隐藏
- C++处理JSON示例
- c++primer 要点-变量和基本类型
- C语言之基本算法21—可逆素数
- Java C# .net 和 C C++ 跨平台的区别
- 基于C++的C语言词法分析器
- leetcode 3sum c语言
- C++ 引用
- 浅谈C语言中的联合体
- c语言基本数据类型所占的位数
- Jni中C++和Java的参数传递
- Windows下使用Sublime Text 3调试/运行 C/C++ 程序
- C++ 之cin与cout常见问题详解
- sift算法c语言实现
- C++运算符重载(成员函数方式)
- C语言中unsigned char* 与char*的区别?
- C++指针学习
- Java通过JNI调用C++程序
- hdu 1159, LCS, dynamic programming, recursive backtrack vs iterative backtrack vs incremental, C++
- 关于Eclipse C++出现Launch failed,Binary not found问题的解决方案(Win7环境下)