OurString operator+(OurString& str1, OurString& str2) { if(str1.len + str2.len > MAX_LENGTH) { cout << "Sorry, the string is too large! We can't add them!"; return str1; } OurString _Added = str1; _Added.ptr = strcat(_Added.ptr, str2.ptr); _Added.len = str1.len + str2.len; return _Added; } 你可以把上述的参数改成const char *str吗
时间: 2024-03-22 21:42:57 浏览: 45
通过string转换比较好些,很多重载函数要么是char * ,要么是String
可以进行修改,修改后的代码如下:
```cpp
OurString operator+(const char* str1, const char* str2) {
int len1 = strlen(str1);
int len2 = strlen(str2);
if(len1 + len2 > MAX_LENGTH) {
cout << "Sorry, the string is too large! We can't add them!";
return OurString();
}
char* temp = new char[len1 + len2 + 1];
strcpy(temp, str1);
strcat(temp, str2);
OurString _Added(temp);
delete[] temp;
return _Added;
}
```
这样修改之后,我们可以直接使用字符串常量进行相加操作,如:`OurString str = "Hello" + "World";`。同时,我们将返回值从原来的引用类型改为了值类型,因为返回值是一个临时变量,没有必要使用引用类型。
阅读全文