C++ 赋值运算符“=”重载样例 - 编写一个长度可变的字符串类
1、相关
1)赋值运算符“=”只能重载为 成员函数
2、要求
编写一个长度可变的字符串类 String2
- 包含一个char * 类型的成员变量,指向动态分配的存储空间
- 该存储空间用于存放 '\0' 结尾的字符串
3、代码实现
#include <iostream> #include <string.h> using namespace std; class String2 { private: char *str; public: String2():str(NULL) {} const char *c_str() { return str; } char * operator=(const char *s); ~String2(); }; char * String2::operator =(const char *s) { if (str) delete [] str; if (s) { str = new char[strlen(s)+1]; strcpy(str, s); } else { str = NULL; } return str; } String2::~String2() { if (str) { delete [] str; } } int main() { String2 s; s = "good luck!"; // <=> s.operator=("good luck!") cout << s.c_str() << endl; return 0; }