类中重载+=和=使用传入char *s
时间: 2023-06-16 13:05:49 浏览: 93
通过string转换比较好些,很多重载函数要么是char * ,要么是String
好的,那么根据你的需求,可以在类中重载+=和=运算符,使其能够接收一个 char* 类型的参数。
下面是示例代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
class MyString {
public:
MyString() {
m_length = 0;
m_data = new char[1];
m_data[0] = '\0';
}
MyString(const char* str) {
m_length = strlen(str);
m_data = new char[m_length + 1];
strcpy(m_data, str);
}
MyString(const MyString& other) {
m_length = other.m_length;
m_data = new char[m_length + 1];
strcpy(m_data, other.m_data);
}
~MyString() {
delete[] m_data;
}
void append(const char* str) {
int newLength = m_length + strlen(str);
char* newData = new char[newLength + 1];
strcpy(newData, m_data);
strcat(newData, str);
delete[] m_data;
m_data = newData;
m_length = newLength;
}
MyString& operator=(const char* str) {
if (m_data) {
delete[] m_data;
}
m_length = strlen(str);
m_data = new char[m_length + 1];
strcpy(m_data, str);
return *this;
}
MyString& operator+=(const char* str) {
append(str);
return *this;
}
friend ostream& operator<<(ostream& os, const MyString& str) {
os << str.m_data;
return os;
}
private:
int m_length;
char* m_data;
};
int main() {
MyString str1("Hello");
MyString str2 = "World";
str1 += "!";
cout << str1 << " " << str2 << endl;
return 0;
}
```
在以上代码中,我们定义了一个 MyString 类,其中重载了 = 和 += 运算符,使其能够接收一个 char* 类型的参数。具体实现时,我们使用了 strcpy、strcat 等字符串操作函数来完成字符串的复制和拼接。在 main 函数中,我们演示了如何使用该类对象进行字符串拼接。
阅读全文