在C++ 11中,建议:
在这种思路下,是否应该声明转换运算符
explicit
以防止编译器使用它们执行隐式转换? 最佳答案
谁提出这个建议,那都是错误的。只要默认实现适合您的需求,就使用它。您可能自己不会更好。
C++ Core Guidelines说“默认情况下,声明单参数构造函数explicit
”。在某些情况下,您可能希望使用隐式构造(例如std::string
来自const char*
)。在这种情况下,请省略explicit
声明。
明确地表达它们没有什么好处。这意味着该转换只能与强制转换一起使用。强制转换比getter函数调用更难读。写转换运算符,当您要隐式转换时,写getters当您要显式转换时。