C++:【常见面试题】String类的写法
2016-05-30 17:16
495 查看
#include<iostream> #include<stdlib.h> using namespace std; class String { public: String(const char* str) :_str(new char[strlen(str) + 1]) // \0 { strcpy(_str, str); } String(const String& s) :_str(NULL) //若不赋空则为随机值,随机值_str析构函数释放指针会崩溃 { String tmp(s._str); //重新开辟空间 swap(_str, tmp._str); } //String& operator = (const String& s) //{ // if (this != &s) //不是自己给自己赋值 // { // String tmp(s._str); //重新开辟空间 // swap(_str, tmp._str); // } // return *this; //} String& operator = (String s) { swap(_str, s._str); return *this; } ~String() { if (_str) { delete[] _str; //注意与new char 匹配 } } char* CStr() { return _str; } char& operator[](size_t index) //重载输出单个字符 { return _str[index]; } private: char* _str; }; void Test2() { String s("change world"); cout << s[1] << endl; s[1] = 'x'; cout << s.CStr() << endl; } int main() { Test2(); system("pause"); return 0; }
相关文章推荐
- C++【String类】String查找单个字符,查找字符串的函数实现
- C++【String类】String删除单个字符,删除字符串的函数实现
- C++【String类】String插入单个字符,插入字符串的函数实现
- C++【String类】String头插单个字符,头删单个字符的函数实现
- C++【常见面试题】String类的实现,以及深拷贝、浅拷贝问题
- 【笔试常考】C语言:深度剖析strlen,sizeof
- 【C语言】注释不可以嵌套使用的举例
- 【C语言】局部变量、全局变量,局部静态变量,全局静态变量,extern,static的区别
- C/C++(&Java) Volatile关键词深度剖析
- C语言;在终端输入多行信息,找出包含“ould”的行,并打印改行。
- C语言:模拟实现printf,要求功能:print(&quot;ccc\ts!&quot;,&#39;b&#39;,&#39;i&#39;,&#39;t&#39;,&quot;welcome to you&quot;);
- 【C语言】编写冒泡排序,排序一个整形数组。
- 【C语言】reverse_str递归调用函数
- C语言:使用冒泡排序,排序多个字符串(优化)。
- C语言:冒泡法排序一组数,如何优化?
- C语言:调整数组使奇数全部都位于偶数前面。
- C语言:模拟实现memmove
- C语言:模拟实现memcpy
- 【笔试题】C语言:模拟实现strcmp
- 【笔试题】C语言:模拟实现strcat