我的教授正在用一个没有构造函数的结构列表来构建一个类(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/