中易网

这个C++代码为啥一运行就显示停止运行了

答案:2  悬赏:30  
解决时间 2021-03-28 21:24
//#include "stdafx.h"
#include

class CMyString
{
public:
CMyString(char* pData = NULL);
CMyString(const CMyString& str);
~CMyString(void);

CMyString& operator = (const CMyString& str);

void Print();

private:
char* m_pData;
};

CMyString::CMyString(char*pData){
if(pData==NULL){
m_pData=new char[1];
m_pData[0]='/0';
}
else{
int a = strlen(pData);
pData = new char(a+1);
strcpy(m_pData,pData);
}
}

CMyString::CMyString(const CMyString& str){
int b = strlen(str.m_pData);
m_pData = new char(b+1);
strcpy(m_pData,str.m_pData);
}

CMyString::~CMyString(){
delete[] m_pData;
}

CMyString& CMyString::operator =(const CMyString& str){
if(this==&str){
return *this;
}
delete[] m_pData;
m_pData = new char(strlen(str.m_pData)+1);
strcpy(m_pData,str.m_pData);
return *this;
}

//==============测试用例=================

void CMyString::Print(){
printf("%s",m_pData );
}

void test(){
char* text = "Junwa";
CMyString str1(text);
CMyString str2;
str2 = str1;
str1.Print();
str2.Print();
}

int main()
{
test();
return 0;
}
最佳答案
main函数执行完了,肯定就停止显示了啊,如果想保持显示窗口,可以在return 0;前面增加getchar();
一般需要两行。一行为了吞掉前面的\n
全部回答
崩溃问题是由于没有初始化引起的,正确代码如下: selemtype e=0; sqstack *s = new sqstack(); 至于其他的逻辑问题自己慢慢调试吧。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
榆木地板好不好?我想选择一家老牌子的,那样
承包大工地水电安装前期预埋什么价钱
绵婷公主无钢圈内衣内衣怎么样招代理加盟
sht无痕植发是怎么做的?
金山毒霸好不好用 金山毒霸功能特点
丹丹美甲美睫化妆品店地址在哪,我要去那里办
怀柔响水湖附近的农家院哪个比较好一点
怎样能快点长高没有副作用呢
为什么说早上吃苹果好?
性价比最好的笔记本电脑。
想学书法,国画,在合肥有好的老师吗
请问普通婚宴用酒用烟
偷税五十万以上怎么处罚
怀的双胞胎肚子长得非常快正常吗?近一个月,
物业维修基金的使用范围有哪些
推荐资讯
如何鉴别画眉鸟的优劣?
甲减患者能喝酒吗
一比一巴黎世家包包批发市场
石家庄高邑地板砖市场在哪
Zara旗下都有什么牌子啊,想了解下。。拜托各
生完宝宝后怎样减肥?
代理记账行业前景怎么样?为什么许多公司现在
西安小寨或骡马市附近哪家理发店剪头发比较好
怎么样来识别各种车的图标是什么牌子的
哪个牌子的面霜好?
《我的世界》修改宠物名称方法
长虹牌液晶电视怎么样
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?