例如,如果我有一个像这样的结构:
struct Client_t {
std::string name;
uint16_t id;
};
在这个结构上有一个构造函数会更好
Client_t(std::string name, uint16_t id) :
name(std::move(name)), id(id) {}
并像这样初始化它:
Client_t* client = new Client_t(name, id)
或者这样做更好:
Client_t* client = new Client();
client->name = name;
client->id = id;
最佳答案
这里有一些始终使用构造函数的充分理由:
- 您可能想要验证参数;
- 如果您突然向结构/类添加更多必需字段,您只需修改构造函数签名,然后让编译器告诉您应该修复代码的位置。如果没有构造函数,这可能会更难以跟踪。有些 IDE 可以帮助完成此任务,但编译器是您的 friend ;
- 您可能想要调试对象的初始化,因此可以在构造函数中添加断点(而不是将它们添加到代码的随机部分);
- 在某些情况下,您可能希望禁止不需要的隐式类型转换,因此您可以在构造函数中使用
explicit
关键字。 What does the explicit keyword mean? - 您可能想在初始化中添加不同的风格。例如,您可能需要一个将参数作为右值接收的构造函数,以及另一个将参数作为引用或按值接收的构造函数。
最后一个想法是,如果使用构造函数,您的代码将会更干净、更易于调试和维护。
关于c++ - 使用构造函数初始化结构或之后设置其值是否更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51800101/