例如,如果我有这样的结构:
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;
答案 0 :(得分:2)
这里有一些始终使用构造函数的充分理由:
explicit
关键字。 What does the explicit keyword mean? 作为最后的想法,如果使用构造函数,您的代码将更加简洁,易于调试和维护。
答案 1 :(得分:0)
构造函数的全部目的是将对象初始化为功能状态。
如果无需完成某些初始化就可以认为对象已完全形成并且可以正常运行,那么可以肯定的是,您可以在以后(也许)保留这些位。但是,如果要使对象能够正常工作,则必须由构造函数来完成,这样调用者就不会忘记以后再做。