#include<iostream.h>
#include<string>
#include<ctype.h>
class student
{
private:
int age;
int number;
char *name;
char sex;
public:
student()
{}
student(int i,int j,char *s,char c)
{
age=i;
number=j;
name=new char[strlen(s)+1];
strcpy(name,s);
sex=c;
}
student(const student &r)
{
age=r.age;
number=r.number ;
name=new char (*r.name) ;
sex=r.sex ;
cout<<"copy"<<endl;
}
~student();
void show_student();
};
student::~student()
{
delete []name;
cout<<"out"<<endl;
};
void student::show_student()
{
cout<<age<<' '<<number<<' '<<name<<' '<<sex<<endl;
};
void main()
{
student A(21,3,"wang",'f');
A.show_student();
student B(A);
B.show_student();
}
程序输出为:
21 3 wang f
copy
21 3 w f
out
out
为什么拷贝的不是wang而是w??
參考答案:昨天我好像给你改了一下代码吧,怎么没动???
把student(const student &r) 改成下面代码
student(const student &r)
{
age=r.age;
number=r.number ;
name=new char[strlen(r.name)+1];
strcpy(name,r.name);
sex=r.sex ;
cout<<"copy"<<endl;
}