0

我是编程新手,学习运算符重载。重载“+”以添加两个字符串。但是当我尝试使用 strcpy 组合两个字符串时,第二个字符串替换第一个字符串而不是用第一个字符串复制。

#include<string.h>
#include <iostream>
#include<conio.h>

using namespace std;

class String
{
    char str[100];
public:
    void operator +(String);
     String()
     {
         strcpy(str,"");
     }
     String(char a[100])
     {
         strcpy(str,a);

     }

};

void String::operator+ (String str1)
{ char temp[100];
  strcpy(temp,str);
  strcpy(temp,str1.str);
  cout<<temp;
}
int main()
{
    String s1=String("Hello");;
    String s2=String("World");
    s1+s2;


    return 0;
}

输出

4

2 回答 2

1

您的代码中的错误是在运算符重载函数中您应该使用 strcat - 字符串连接有关更多信息,请查看:字符串连接

于 2017-04-08T13:18:35.800 回答
0

我认为您错过了将两个字符串的值分配给这样的新字符串:

String nString = s1 + s2;
于 2017-04-08T13:16:45.453 回答