求救,简单问题,求解答
这个程序实现新定义字符串的连接(+);赋值(=)运算,就是老是运行出错,求解答,,求解答;万分感谢
#include<iostream.h>
#include<string.h>
class mstring
{
public:
mstring (){st=NULL;}
mstring(char *s){st=s;}
~mstring(){if(st!=NULL) delete []st;}
mstring & operator+(const mstring &);
mstring & operator=(const mstring &);
void display()
{
cout<<st;
}
private:
char * st;
};
mstring & mstring::operator +(const mstring & m)
{
mstring x;
x.st=new char[strlen(st)+strlen(m.st)+1];
strcpy(x.st,st);
strcat(x.st,m.st);
return x;
}
mstring & mstring::operator =(const mstring & m)
{
if(st!=NULL)
delete []st;
st=m.st;
return *this;
}
main()
{
mstring m1("a fool"), m2(" is you"),m3;
m1.display();
m2.display();
m3=m1+m2;
m1.display();
m2.display();
m3.display();
}
[解决办法]
#include <stdio.h>#include <stdlib.h>#include <iostream>#include <string.h>using namespace std;class mstring{public: mstring (){st=NULL;} mstring(char *s){st = (char *)malloc (strlen(s)+1);strcpy(st,s);} ~mstring(){if(st!=NULL) delete []st;} mstring & operator+(const mstring &); mstring & operator=(const mstring &); void display() { cout<<st; }private: char * st;};mstring & mstring::operator +(const mstring & m){ mstring *x = (mstring*)malloc(sizeof(mstring)); x->st=new char[strlen(st)+strlen(m.st)+1]; strcpy(x->st,st); strcat(x->st,m.st); return *x;}mstring & mstring::operator =(const mstring & m){ if(st!=NULL) delete []st; st = (char *)malloc (strlen(m.st)+1); st=m.st; return *this;}int main(){ mstring m1("a fool"), m2(" is you"),m3; m1.display(); m2.display(); m3=m1+m2; m1.display(); m2.display(); m3.display();}