我注意到facebook中的BrokenPromise定义愚蠢:: future库,我无法理解explict BrokenPromise(const char * type)构造函数的用途吗?有必要吗?
class FOLLY_EXPORT BrokenPromise : public PromiseException {
public:
explicit BrokenPromise(const std::string& type)
: PromiseException("Broken promise for type name `" + type + '`') {}
explicit BrokenPromise(const char* type) : BrokenPromise(std::string(type)) {}
};
https://github.com/facebook/folly/blob/master/folly/futures/Promise.h#L47
答案 0 :(得分:0)
1个参数构造函数是转换构造函数。如果操作不仅仅是重新解释(并且无损失),大多数编码标准都会说你明确了。
字符串的BrokenPromise不仅仅是对字符串的无损重新解释。因此,明确。
还有其他原因可以避免隐式转换;例如,如果BrokenPromise
是隐含的,则0
可能会意外地从char const*
构建。
非显式的情况可能是从单个浮点数构造复数;实数是该综合体的一个子集。