operator 和 析构函数的 调用问题?

qiucp qiucp 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

#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;
}


希望高手指教。^_^
...全文
评论 34
收藏 已收藏
分享
返回顶部
qiucp
C++ 语言 65,214 成员 250,514 内容