#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[n]匹配 } } 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类的写法
原创
©著作权归作者所有:来自51CTO博客作者韩静静的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
c++常见面试题大全(2021)
2021常见C/C++面试题大全
C语言 编程语言 C++ -
【C++】内存管理常见面试题
malloc / free 和 new / delete 共同点:都是从堆上申请空间,并且需要用户手动释放。
c++ 内存泄露 内存泄漏 初始化 -
C++基础知识常见面试题
一些常见的C++基础面试题,仅供复习参考
C/C++ 面试题 -
四、C++内存管理常见面试题
四、内存管理(1)变量的存储位置?程序的内存分配?在C++中,内存区分为5个:堆
c++ 开发语言 初始化 动态内存分配 段错误 -
常见面试题
简单的面试题总结
SQL 数据 结果集