用c++设计一个字符串类,实现该类的+,+=,>运算符重载
时间: 2024-03-03 17:49:08 浏览: 69
好的,下面是一个简单的字符串类的实现,包括了+、+=和>运算符的重载。请参考下面的代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
class String {
public:
String() : data(nullptr), length(0) {}
String(const char* str) {
length = strlen(str);
data = new char[length + 1];
strcpy(data, str);
}
String(const String& other) {
length = other.length;
data = new char[length + 1];
strcpy(data, other.data);
}
~String() {
if (data) {
delete[] data;
data = nullptr;
}
}
String& operator=(const String& other) {
if (this != &other) {
if (data) {
delete[] data;
data = nullptr;
}
length = other.length;
data = new char[length + 1];
strcpy(data, other.data);
}
return *this;
}
String operator+(const String& other) const {
String result;
result.length = length + other.length;
result.data = new char[result.length + 1];
strcpy(result.data, data);
strcat(result.data, other.data);
return result;
}
String& operator+=(const String& other) {
char* temp = new char[length + 1];
strcpy(temp, data);
if (data) {
delete[] data;
data = nullptr;
}
length += other.length;
data = new char[length + 1];
strcpy(data, temp);
strcat(data, other.data);
delete[] temp;
return *this;
}
bool operator>(const String& other) const {
return strcmp(data, other.data) > 0;
}
friend ostream& operator<<(ostream& os, const String& str) {
return os << str.data;
}
private:
char* data;
int length;
};
```
这个字符串类包含了默认构造函数、带一个参数的构造函数(用于从C风格字符串创建字符串对象)、拷贝构造函数、析构函数、赋值运算符重载、+运算符重载、+=运算符重载和>运算符重载。其中,+和+=运算符都返回了一个新的字符串对象。
你可以在自己的代码中使用这个字符串类,并根据需要重载其他运算符。
阅读全文