#include <iostream>
#include<string>
using namespace std;
class String
{
public:
String(const char *str=NULL);
String(const String &r);
~String()
{
cout<<"xigou"<<mydata<<endl;
}
int getSize();
private:
char *mydata;
int size;
};
String::String(const char *str)
{
cout<<"gouzao "<<str<<endl;
size=sizeof(str);
}
String::String(const String &r)
{
size=r.size;
mydata=new char[size];
for(int i=0;i<size;i++)
{
mydata[i]=r.mydata[i];
}
cout<<"kaobei gouzao"<<mydata<<endl;
}
int main()
{
String s1,s2("hello");
String s3(s2);
return 0;
}
1 回答
已采纳
qq_啊你竟然丶_0
TA贡献4条经验 获得超3个赞
你没有搞清楚sizeof()的用法;
第22行,--------------size=sizeof(str);----
这里的str是指针,并不是数组,size会等于4,
导致你第二个构造函数new的空间跟预想产生出入,
建议用string的str.size()或者strlen()都可以,
还有定义构造函数时私有成员没有全部初始化,很危险;
再有就是new了之后一定要delete,在析构函数里;
暂时就这些了,按照这个思路改应该差不多
- 1 回答
- 0 关注
- 1143 浏览
添加回答
举报
0/150
提交
取消