gpt4 book ai didi

作为类成员的 C++ 对象实例

转载 作者:搜寻专家 更新时间:2023-10-31 01:47:45 25 4
gpt4 key购买 nike

抱歉,如果标题有误,我不知道该怎么命名。

我有一个类名:

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);
}
};

这样做是否正确,为什么我不能像我最初想的那样去做?谢谢

最佳答案

构造函数如下:

Person(double h, const Name& n)
: height(h), name(n)
{}

然后阅读您最喜欢的 C++ 教科书中的构造函数初始化列表。

您的原始代码不起作用的原因是 Name 没有默认构造函数(可以不带参数调用的构造函数)。

关于作为类成员的 C++ 对象实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18820384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com