gpt4 book ai didi

c++ - 为什么我不会在C++中为此结构使用构造函数?

转载 作者:行者123 更新时间:2023-12-02 09:49:27 25 4
gpt4 key购买 nike

我的教授正在用一个没有构造函数的结构列表来构建一个类(class)学生。但是无论出于什么原因,都说不需要构造函数,那为什么呢?我已经给他发了电子邮件,但没有任何回应,所以我想知道是否有人可以告诉我为什么它不需要构造函数。这是结构和类

struct Record
{
string class_name;
char grade;
};
class Student
{

public:
Student(string &name);
void printRecords();
char gradeForClass(string &cl_name);
string standing();
void addClass(string&, char);

private:
int numClassesTaken;
string st_name;
std::list<Records> st_records;
};

最佳答案

如果您在谈论Record,那么他/她是对的,您可以初始化Record对象而无需为其编写构造函数。 Record是一个聚合,这意味着您可以使用aggregate initialization:

Record r{"some class name", 'A'};

这种方法虽然存在一些问题。由于一些复杂的规则,因此:
Record r;

会将 r.grade字段保留为未初始化状态。您需要改用以下方法:
Record r{};

另一种选择是对 grade进行默认初始化
struct Record
{
string class_name;
char grade{}
// or
// char grade = 'S';
};

关于c++ - 为什么我不会在C++中为此结构使用构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61470379/

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