很容易忘记将构造函数标记为"显式":添加/删除args,使它们成为可选的等等.我知道的唯一可靠方法是将每个构造函数声明为显式,然后仅在设计需要隐式时才删除此关键字(谢谢标准,不仅允许单参数构造函数).但这看起来很难看.
不打算隐式构造函数打开(错误的)隐式转换的使用,例如在这里.这可能是偶然发生的,或者可能会破坏向后兼容性
那么为什么"显式"不是构造函数的默认特性,如果这会导致更少的错误?
ps是的,我读过Stroustrup的"C++的设计和演变",只是不记得他是否说过"明确的"那里
Lig*_*ica 10
因为当构思C++时,人们认为没有人会编写愚蠢的代码,并且每个人都会享受到良好的隐式转换会带来的好处,避免在任何地方编写演员表.
当然,这竟然是假的,真的有车的构造所有的地方.真是太遗憾了.