C/C+:explicitキーワード

779 ワード

e x p l i c i t暗黙変換禁止{red{explicit暗黙変換禁止}}explicit暗黙変換禁止
explicitは、暗黙的な呼び出し構造関数を防止するためによく使用されます.
class A{
    public: A(int a){cout<

出力:5 10{orange{出力:510}}出力:5 10コメント文を加え、コンパイルエラー、暗黙的に呼び出すことはできません{orange{コメント文を加え、コンパイルエラー、暗黙的に呼び出すことはできません}}コメント文を加え、コンパイルエラー、暗黙的に呼び出すことはできません
なぜ付与文が構造関数を暗黙的に呼び出すのかを説明します:{red{なぜ付与文が構造関数を暗黙的に呼び出すのかを説明します:}}なぜ付与文が構造関数を暗黙的に呼び出すのかを説明します:
クラスBにはカスタムコンストラクション関数があるので、コンパイラは自動的にコンパイラを生成しませんが、自動的にコンストラクション関数{red{コンストラクション関数}}コンストラクション関数、レプリケーションコンストラクション関数{orange{レプリケーションコンストラクション関数}}コンストラクション関数、賦値関数{green{賦値関数}}賦値関数、取址関数{blue{取址関数}取址関数が生成されます.
B b = 15; 実行順序は次のとおりです.
  • "15"は暗黙的にインスタンスBに変換され、すなわち、呼び出しB(int)構造は一時インスタンスtを生成し、B b=tとなる.
  • 一時インスタンスtは、複製構造関数を暗黙的に呼び出し、tをb,tにコピーして破棄する.