已知C++string类原型如下 class String { private: char* pStr; public: String(char* p = nullptr); ~String(); String(String& s); String operator+(String& obj); }; 请实现它的成员函数和调用函数
时间: 2023-11-12 09:27:27 浏览: 140
好的,根据您提供的C++ String类原型,我来实现它的成员函数和调用函数。代码如下:
```c++
#include <iostream>
#include <cstring>
class String {
private:
char* pStr;
public:
String(char* p = nullptr) {
if (p == nullptr) {
pStr = new char[1];
*pStr = '\0';
} else {
pStr = new char[strlen(p) + 1];
strcpy(pStr, p);
}
}
~String() {
delete[] pStr;
}
String(String& s) {
pStr = new char[strlen(s.pStr) + 1];
strcpy(pStr, s.pStr);
}
String operator+(String& obj) {
char* temp = new char[strlen(pStr) + strlen(obj.pStr) + 1];
strcpy(temp, pStr);
strcat(temp, obj.pStr);
String result(temp);
delete[] temp;
return result;
}
char* GetStr() {
return pStr;
}
};
int main() {
String str1("Hello");
String str2("World");
String str3 = str1 + str2;
std::cout << str3.GetStr() << std::endl;
return 0;
}
```
在上面的代码中,我们先定义了一个String类,包括构造函数、析构函数、拷贝构造函数以及重载了加号运算符的成员函数。其中,构造函数和析构函数分别用来初始化和销毁字符串对象;拷贝构造函数用来复制一个已有的字符串对象;加号运算符用来实现两个字符串对象的连接操作。
在主函数中,我们创建了三个String对象,分别是“Hello”、“World”和它们的和。然后调用GetStr()函数获取字符串对象的值,并输出结果。
阅读全文