【发布时间】:2013-09-16 04:23:03
【问题描述】:
对不起,如果标题错误,我不知道如何命名。
我有一个班级名称:
class Name {
char * name;
public:
Name(const char * n){
name = new char[strlen(n)+1];
strcpy(name,n);
}
Name& operator=(const Name& n){
name = new char[strlen(n.name)+1];
strcpy(name, n.name);
return *this;
}
Name(const Name& n){
*this = n;
}
};
另一个类 Person 应该有 Name 对象作为它的成员。我怎样才能做到这一点?我在想这样的事情:
class Person{
double height;
Name name;
public:
Person(double h, const Name& n){
height = h;
name = n;
}
};
但似乎只有这样可行:
class Person{
double height;
Name * name;
public:
Person(double h, const Name & n){
height = h;
name = new Name(n);
}
};
这是正确的方法吗?为什么我不能像我最初想的那样做?谢谢
【问题讨论】:
-
附言。复制构造函数中存在内存泄漏。查找复制和交换习语以正确帮助它。