【发布时间】:2016-03-29 16:46:14
【问题描述】:
在C++11中,推荐:
是否应该在这种思路中声明转换运算符explicit 以防止编译器使用它们来执行隐式转换?
【问题讨论】:
-
"明确定义我们自己的复制/移动构造函数" 嗯,不。你是从哪里听来的?还是您将
= default视为定义? -
建议#1 来自哪里?在大多数情况下,编译器生成的复制和移动构造函数都可以。只是需要手动管理资源(例如内存)的类需要自己定义。
-
我完全不同意第 1 点。除非您正在编写资源管理类,否则请遵循 Rule Of Zero。
-
这取决于您是否要允许隐式转换。 (如果不是,您可以考虑使用命名函数而不是显式转换运算符)。
-
我认为这将是一个很好的问题,如果它只是询问“何时显式声明转换运算符”。
标签: c++ c++11 type-conversion implicit-conversion