📅  最后修改于: 2023-12-03 14:49:57.961000             🧑  作者: Mango
在C++中,可以使用运算符重载的概念重载“+”运算符来连接两个字符串,使得代码更加简洁易懂。下面将介绍这个程序的实现方法。
定义一个字符串类,包含私有变量存储字符串内容和长度,公有方法获取和设置字符串内容。
class MyString {
private:
char* str;
int length;
public:
MyString(const char*);
MyString(){}
MyString(const MyString&);
~MyString();
//其他方法省略
};
为该类重载“+”运算符。
MyString operator+(const MyString& str1, const MyString& str2) {
MyString newStr;
newStr.length = str1.length + str2.length;
newStr.str = new char[newStr.length + 1];
memcpy(newStr.str, str1.str, str1.length);
memcpy(newStr.str + str1.length, str2.str, str2.length + 1);
return newStr;
}
在重载运算符中,创建一个新字符串对象并为其分配存储空间。然后使用memcpy()函数将两个字符串拼接成一个新的字符串,并返回这个字符串对象。
在main函数中使用重载运算符。
int main() {
MyString str1("Hello");
MyString str2("World");
MyString str3 = str1 + str2;
str3.display();
return 0;
}
在main函数中,首先创建两个MyString对象,并将其传递给“+”运算符的重载函数来拼接新字符串。然后使用MyString类的display()方法来输出新的字符串。
#include <cstring>
#include <iostream>
using namespace std;
class MyString {
private:
char* str;
int length;
public:
MyString(const char*);
MyString(){}
MyString(const MyString&);
~MyString();
void display() const { cout << str << endl; }
friend MyString operator+(const MyString&, const MyString&);
};
MyString::MyString(const char* s) {
length = strlen(s);
str = new char[length + 1];
strcpy(str, s);
}
MyString::MyString(const MyString& old_str) {
length = old_str.length;
str = new char[length];
memcpy(str, old_str.str, length);
}
MyString::~MyString() {
if (str != NULL) delete[] str;
}
MyString operator+(const MyString& str1, const MyString& str2) {
MyString newStr;
newStr.length = str1.length + str2.length;
newStr.str = new char[newStr.length + 1];
memcpy(newStr.str, str1.str, str1.length);
memcpy(newStr.str + str1.length, str2.str, str2.length + 1);
return newStr;
}
int main() {
MyString str1("Hello");
MyString str2("World");
MyString str3 = str1 + str2;
str3.display();
return 0;
}
通过上述方法,我们可以使用运算符重载来连接两个字符串,使得代码更加简洁易懂。