定义一个mystring类,实现两个字符串相加。要求定义类的数据成员为字符指针实现深
时间: 2023-09-09 08:02:08 浏览: 64
定义一个MyString类,实现两个字符串相加。在该类中,我们将使用字符指针来实现字符串的深拷贝。
首先,我们需要在类的私有成员中定义一个字符指针来表示字符串。我们可以将其命名为`str`。此外,我们还可以定义一个整型成员变量`len`来表示字符串的长度。
接下来,我们可以构造一个默认构造函数,用来初始化字符串为空字符串并将长度设置为0。另外,我们还可以构造一个带参构造函数,用来初始化字符串并计算长度。
接着,我们需要实现一个字符串相加的成员函数`stringAdd`。该函数接收一个参数,即待相加的字符串。首先,我们需要动态分配一个大小适当的内存空间来存储两个字符串的结果。然后,我们可以使用`strcpy`函数将第一个字符串拷贝到结果字符串中。接着,我们使用`strcat`函数将第二个字符串拼接到结果字符串之后。最后,我们返回结果字符串。
由于我们使用了字符指针来实现字符串的深拷贝,因此在类的析构函数中,我们需要释放掉动态分配的内存空间,以避免内存泄漏。
最后,我们可以在类的外部使用该类来实现字符串相加的功能。
下面是一个示例代码:
```cpp
#include <iostream>
#include <cstring>
class MyString {
private:
char* str;
int len;
public:
MyString() {
str = new char[1];
str[0] = '\0';
len = 0;
}
MyString(const char* s) {
len = strlen(s);
str = new char[len + 1];
strcpy(str, s);
}
~MyString() {
delete[] str;
}
char* stringAdd(const MyString& s) {
char* result = new char[len + s.len + 1];
strcpy(result, str);
strcat(result, s.str);
return result;
}
};
int main() {
MyString s1("Hello");
MyString s2(" World");
char* result = s1.stringAdd(s2);
std::cout << result << std::endl;
delete[] result;
return 0;
}
```
这样,我们就定义了一个MyString类,可以实现两个字符串的相加操作,并通过字符指针实现了字符串的深拷贝。