私は知っている単一の信頼できる方法は、すべてのコンストラクタを明示的に宣言してから、暗黙のうちにこのキーワードを削除することです(単一引数のコンストラクタだけでなく、これを可能にする標準のおかげで)。しかし、これは醜いように見えるだろう。コンストラクタがデフォルトで明示的でない理由
暗黙のコンストラクタは、(間違った)暗黙の変換の使用を意図していません。 hereとなります。これは偶然に起こる可能性がありますか、後方互換性を損なう可能性があります。
なぜ、明示的にコンストラクターのデフォルト特性ではないのはなぜですか?
p.s.ええ、私はStroustrupの "The Design and Evolution of C++"を読んで、そこに「明示的」なことについて何か言わなければ覚えていません。
「忘れている」経験がなくなってしまう –
@Gene:おそらく、目に見えるものをすべて「明示的」にしたいとします。 –
@robinフード:あなたのリンクに関しては、私の見解では、そこにある問題は暗黙的な変換ではありませんが、 "関数がAオブジェクトしか取らず、Aオブジェクトがループ。"問題が驚くべきコード効果である場合、その答えは言語をダンピングするよりも、より良いプログラマでなければなりません。もちろん、世界のC#/ Java/VBのファンは異なる意見を持っているかもしれません。 –