我无法通过运算符重载连接两个字符串。代码如下。
#include<iostream>
#include<string.h>
using namespace std;
class String
{
char *len;
public:
String(char *s);
void display();
String(){}
void setData(char *s);
//String(String &x);
~String();
String operator+(String);
void extend(int l);
};
void String::extend(int f)
{
len=(char *)realloc(len,(f+1)*sizeof(char));
}
String String::operator+(String x)
{
String t;
printf("%s\n",len);
t.setData(len);
t.extend(strlen(len)+strlen(x.len));
strcat(t.len,x.len);
printf("%s\n",t.len);
return (t);
}
String::~String()
{
delete len;
}
void String::setData(char *s)
{
len=(char *)calloc(strlen(s)+1,sizeof(char));
strcpy(len,s);
}
String::String(char *s)
{
len=(char *)calloc(strlen(s)+1,sizeof(char));
strcpy(len,s);
}
void String::display()
{
printf("%s\n",len);
}
int main()
{
String a=String("United ");
String b,c;
b.setData("States");
c=a+b;
c.display();
system("pause");
return 0;
}
问题是字符串在运算符重载函数内部被连接,但是当返回对象并调用显示函数时,输出是垃圾值。