显式构造函数
对单个参数的构造函数使用 C++ 关键字 explicit.
定义:
通常, 如果构造函数只有一个参数, 可看成是一种隐式转换....看上去很方便, 但如果你并不希望如此通过转换生成一个新对象的话, 麻烦也随之而来. 为避免构造函数被调用造成隐式转换, 可以将其声明为 explicit....拷贝 / 移动构造函数在某些情况下会被编译器隐式调用. 例如, 通过传值的方式传递对象....移动操作允许隐式且高效地将源数据转移出右值对象. 这有时能让代码风格更加清晰.
缺点:
许多类型都不需要拷贝, 为它们提供拷贝操作会让人迷惑, 也显得荒谬而不合理....译者 (YuleFox) 笔记
不在构造函数中做太多逻辑相关的初始化;
编译器提供的默认构造函数不会对变量进行初始化, 如果定义了其他构造函数, 编译器不再提供, 需要编码者自行提供默认构造函数;
为避免隐式转换