修改Copy函数改错怎么改啊。
#include <iostream>#include <cstring>
using std::cout;
using std::endl;
class Person{
char *name;int id;
public:
Person(const char* pn="noName", int i = 0){
name=new char;
if(name!=0)strcpy(name,pn);
id = i;
}
~Person(){
cout<<"Destruct "<<name<<endl;
delete [] name;
}
void print(){
cout<<name<<" : "<<id<<'\n';
}
void copy(Person const &rp){
delete [] name;
name=new char;
if(name!=0)strcpy(name,rp.name);
id = rp.id;
}
};
int main(){
Person p1("Randy", 1),p2;
p2.copy(p1).print();//这两行我是真的没懂
p2.copy(p2).print();
}
如果p2.copy(p1)的返回值是一个Person类,p2.copy(p1).print()是可以的;因为copy函数的返回值为void,所以不能这么调用print。 LeoChou 发表于 2016-4-16 11:28
如果p2.copy(p1)的返回值是一个Person类,p2.copy(p1).print()是可以的;因为copy函数的返回值为void,所以 ...
所以我要怎么修改?谢谢大神 对C++只是略知皮毛,C了解的深一点。可以将将p2.copy(p1).print();分开写:p2.copy();p2.print();或者将copy函数的返回值改为Person类。Person copy(...){...... return (*this);} LeoChou 发表于 2016-4-18 08:35
对C++只是略知皮毛,C了解的深一点。可以将将p2.copy(p1).print();分开写:p2.copy();p2.print();或者将copy ...
谢谢,两种方法我都试过,哈哈,第一种好像会出问题,然后第二种我不懂返回值是什么,所以一直出错。原来要return *this啊,谢谢大神。
页:
[1]