6.3w+
社区成员
#include <iostream.h>
#include <assert.h>
#include <string.h>
#define PNULL 0
class My_String
{
public:
void Output(void);
My_String(void);
My_String(char *str);
~My_String(void);
My_String operator = (const My_String &str);
private:
char *m_pstr;
char m_strlen;
};
My_String::My_String(void)
{
m_strlen = 1;
m_pstr = new char[m_strlen];
assert(m_pstr != PNULL);
*m_pstr = '\0';
}
My_String::My_String(char *str)
{
m_strlen = strlen(str) + 1;
m_pstr = new char[m_strlen];
assert(m_pstr != PNULL);
strcpy(m_pstr, str);
}
My_String::~My_String(void)
{
delete m_pstr;
}
void My_String::Output(void)
{
cout<<"the string is:"<<endl;
cout<<m_pstr<<endl;
return;
}
My_String My_String::operator = (const My_String &str)
{
if (this == &str)
return *this;
m_strlen = str.m_strlen;
//free the old spaces
if (m_pstr != PNULL)
delete m_pstr;
m_pstr = new char[m_strlen];
assert(m_pstr != PNULL);
strcpy(m_pstr, str.m_pstr);
return *this;
}
int main()
{
My_String str("aldjalfjgsfsdfasdfadfadf");
My_String st;
str.Output();
st = str; //为什么程序在运行完这句之后就将st析构掉了啊???????
st.Output();
return 1;
}