Looking for c++ Answers? Try Ask4KnowledgeBase
Looking for c++ Keywords? Try Ask4Keywords

C++過負荷の解決


備考

過負荷の解決はいくつかの異なる状況で起こります

  • 名前付きオーバーロードされた関数を呼び出します。候補者は、名前検索によって見つかったすべての関数です。
  • クラスオブジェクトを呼び出します。候補は通常、クラスのすべてのオーバーロードされた関数呼び出し演算子です。
  • オペレータの使用。候補は、名前空間のスコープでオーバーロードされた演算子関数、左クラスオブジェクト(存在する場合)のオーバーロードされた演算子関数、および組み込み演算子です。
  • 初期化のために呼び出す正しい変換演算子関数またはコンストラクタを見つけるためのオーバーロードの解決
    • 非リスト直接初期化( Class c(value) )の場合、候補はClassコンストラクタです。
    • 非リストコピー初期化( Class c = value )と、ユーザー定義の変換シーケンスで呼び出すユーザー定義の変換関数を見つけるため。候補はClassのコンストラクタであり、ソースがクラスオブジェクトの場合、その変換演算子が機能します。
    • クラスオブジェクトから非クラスを初期化する( Nonclass c = classObjectクラスNonclass c = classObject )。候補は、イニシャライザオブジェクトの変換演算子関数です。
    • クラスオブジェクトに参照を初期化するために( R &r = classObject )、クラスに直接rバインドできる値を生成する変換演算子関数がある場合。候補は、そのような変換演算子関数です。
    • 非集約クラスオブジェクト( Class c{1, 2, 3} )のリスト初期化の場合、候補は過負荷解決による最初のパスの初期化子リストコンストラクタです。これで実行可能な候補が見つからない場合は、 Classのコンストラクタを候補として、2番目のパスのオーバーロード解決が行われます。

過負荷の解決 関連する例