哪错啦

作者在 2009-05-17 12:50:09 发布以下内容
#include<iostream>
#include<string>
#include<iomanip>
using namespace std;
class person
{string pname;
//char*pname;
public:
 person(char* pn="noname")
 {cout<<"constructing "<<pn<<endl;
     //pname=new char[strlen(pn)+1];
  //if( pname) strcpy(pname,pn);
  pname=pn;
 
 }
 person(const person &s)
 {cout<<"copy constructing   "<<s.pname<<endl ;
     //pname=new char[strlen(s.pname )+1];
  //if(pname) strcpy(pname,s.pname );
 
 
 }
 ~person()
 {cout<<"destructing  "<<pname<<endl;
 
 }

};
void main()
{person p1("zhang");
person p3(p1);

}
运行结果有点小错  不知道那错  请指点下巴
默认分类 | 阅读 1856 次
文章评论,共1条
missiyou
2009-08-18 21:07
1
class person<br />
{<br />
char*pname;<br />
public:<br />
person(char* pn)<br />
{<br />
pname = NULL;<br />
if( !pn)return;<br />
<br />
cout&lt;&lt;&quot;constructing &quot;&lt;&lt;pn&lt;&lt;endl;<br />
char *p = new char[strlen(pn)+1]; <br />
memset( p,0, strlen(pn)+1);&nbsp;&nbsp;&nbsp;//不加这个会有乱码,这个是置0 <br />
strncpy(p, pn, strlen(pn));<br />
pname = p;<br />
}<br />
<br />
person(const person &amp;s)<br />
{<br />
if(&amp;s == this )return;<br />
cout&lt;&lt;&quot;copy constructing&nbsp;&nbsp;&nbsp;&quot;&lt;&lt;s.pname&lt;&lt;endl ;<br />
char *str = new char[strlen(s.pname)];<br />
memset( str,0, strlen(str)+1);<br />
strncpy(str, s.pname, strlen(s.pname));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pname = str;<br />
&nbsp;&nbsp;<br />
<br />
}<br />
 ~person()<br />
 {<br />
&nbsp;&nbsp;&nbsp;cout&lt;&lt;&quot;destructing&nbsp;&nbsp;&quot;&lt;&lt;pname&lt;&lt;endl;<br />
 delete[] pname;<br />
 <br />
 }<br />
<br />
};<br />
void my()<br />
{&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;person p1(&quot;wangxudong I Love YOu &quot;);<br />
person p3= p1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
 }
游客请输入验证码
文章分类
最新评论