a1798826049 2014-11-07 08:13
浏览 707

似乎是析构函数出问题

#include
#include
using namespace std;
#ifndef _String_h
#define _String_h
class String{
public:
String(char *s=NULL);
//~String();
String operator+( String &cs);
void display();
private:
char *str;
};
String::String(char *s){
if (s==NULL){
str = new char[1];
str= '\0';
}
else{
int length = strlen(s)+1;
str = new char[length ];
strcpy_s(str,length, s);
}

};
/*String::~String(){
cout << "diao yong xigou" << endl;
delete []str;
}*/

String String::operator+(String &cs){
String newstr;
int l = strlen(str) + strlen(cs.str)+1;
newstr.str = new char[l];
strcpy_s(newstr.str,l, str);
strcat_s(newstr.str,l, cs.str);
return newstr;
}

void String::display(){
cout << str << endl;
}
#endif
#include "String.h"
int main(){
String c1("obj"),c2("ect"),c3;
cout << "c1="; c1.display();
cout << "c2="; c2.display();
c3 = c1 + c2;
cout << "c3="; c3.display();
return 0;

}

没注视掉析构函数运行出错,在c1.display时会调用析构函数,但我下面还要c1,为何会调用析构函数呢,但注释后可以运行成功,但没有delete释放内存,不知内存会被释放不.

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 求差集那个函数有问题,有无佬可以解决
    • ¥15 【提问】基于Invest的水源涵养
    • ¥20 微信网友居然可以通过vx号找到我绑的手机号
    • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
    • ¥15 解riccati方程组
    • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
    • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
    • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
    • ¥50 树莓派安卓APK系统签名
    • ¥65 汇编语言除法溢出问题