为了账号安全,请及时绑定邮箱和手机立即绑定

这个代码有什么问题?

这个代码有什么问题?

C++
eqeqw 2017-04-08 15:44:09
#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 反对 回复 2017-04-09
  • 1 回答
  • 0 关注
  • 1143 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信