C++字符串重载-
时间: 2023-07-29 22:10:23 浏览: 99
C++中的字符串重载通常是指对字符串类的运算符进行重载,使得字符串对象可以像基本数据类型一样进行运算。例如,可以对字符串的加法运算符进行重载,使得两个字符串对象可以通过“+”号进行拼接。
下面是一个简单的字符串类的定义和加法运算符重载的示例代码:
```cpp
#include <cstring>
#include <iostream>
class String {
public:
String() : data(nullptr), length(0) {}
String(const char* s) : data(nullptr), length(0) {
if (s != nullptr) {
length = strlen(s);
data = new char[length + 1];
strcpy(data, s);
}
}
~String() {
if (data != nullptr) {
delete[] data;
}
}
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;
}
friend std::ostream& operator<<(std::ostream& os, const String& str) {
os << str.data;
return os;
}
private:
char* data;
size_t length;
};
int main() {
String s1("Hello"), s2("world");
String s3 = s1 + s2;
std::cout << s3 << std::endl;
return 0;
}
```
在上面的代码中,我们定义了一个简单的字符串类`String`,它包含了一个字符数组`data`和字符串的长度`length`。我们对加法运算符进行了重载,使得两个字符串对象可以通过“+”号进行拼接,并返回一个新的字符串对象。在重载函数中,我们首先创建一个新的字符串对象`result`,然后计算拼接后的长度,为`result`分配足够的内存,将两个原始字符串拷贝到`result`中,并返回`result`对象。
最后,我们定义了一个友元函数`operator<<`,用于输出字符串对象的内容。
需要注意的是,在实现字符串重载时,需要考虑到内存的分配和释放问题,避免内存泄漏和悬空指针等问题。
阅读全文