在 C++ 中,通常的字符串拼接会修改其中一个对象。但在某些应用场景中,我们希望在不修改原字符串的情况下生成一个新的连接后的字符串对象。
请实现一个自定义的 String 类,该类管理一个字符指针 char *sPtr 和一个长度 int length。你需要严格按照以下要求实现内存管理和运算符重载:
- 构造函数:支持从
const char * 转换构造,默认为空字符串。
- 拷贝构造函数:必须实现深拷贝(Deep Copy),以防止多个对象指向同一块内存导致 Double Free 错误。
- 析构函数:正确释放内存。
- 赋值运算符 (
=):重载 = 以支持对象间的深拷贝赋值。
- 连接运算符 (
+):重载 +,使得 string1 = string2 + string3 成立。注意: 该操作不能修改 string2 和 string3 的内容,必须返回一个新的 String 对象。
- 输出运算符 (
<<):重载流输出运算符以便打印字符串。