字符串类mystring的私有数据成员char *p用来存储一个字符串,请设计这个字符串类使得以下的main函数能正常编译执行。 int main() { mystring s1("hello"); mystring s2 = s1; s1.set('H'); // 修改字符串的第一个字符 s1.show(); s2.show(); return 0; }
时间: 2024-03-08 19:49:01 浏览: 104
编写一个MyString类
4星 · 用户满意度95%
好的,根据您的要求,我已经设计出了如下的mystring类,可以满足您的需求:
```
#include <iostream>
#include <cstring>
using namespace std;
class mystring {
private:
char *p;
public:
mystring(const char* str) { // 构造函数
p = new char[strlen(str) + 1];
strcpy(p, str);
}
mystring(const mystring& str) { // 拷贝构造函数
p = new char[strlen(str.p) + 1];
strcpy(p, str.p);
}
void set(char c) { // 修改字符串的第一个字符为c
p[0] = c;
}
void show() const { // 输出字符串
cout << p << endl;
}
~mystring() { // 析构函数
delete[] p;
}
};
```
这个mystring类含有一个私有数据成员char *p,用来存储一个字符串。构造函数用来初始化字符串,拷贝构造函数用来实现深拷贝,set函数用来修改字符串的第一个字符,show函数用来输出字符串,析构函数用来释放动态分配的内存。
在main函数中,我们先定义了一个s1对象,其构造函数用来初始化一个字符串"hello";然后我们通过拷贝构造函数将s1对象拷贝给了s2对象;接着我们使用set函数来修改了s1对象中的第一个字符为'H';最后我们依次输出s1和s2对象中存储的字符串,从而测试了mystring类的正确性。
希望我的解答能够帮到您,如果还有其他问题,请随时提出。
阅读全文