首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

,简单有关问题,求解答

2012-03-20 
求救,简单问题,求解答这个程序实现新定义字符串的连接(+);赋值()运算,就是老是运行出错,求解答,,求解答;

求救,简单问题,求解答
这个程序实现新定义字符串的连接(+);赋值(=)运算,就是老是运行出错,求解答,,求解答;万分感谢
#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();

}

[解决办法]

C/C++ code
#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();} 

热点排行