BohYoh.comトップページへ
C & C++ FAQ
目次

C++ 呼出し情報(シグネチャ)とは何ですか。

 呼出し情報/シグネチャ(signature)とは、関数の多重定義解決に用いるための情報のことです。基本的には、各関数の仮引数の型の並び(および、それを囲んでいる名前空間があれば、その名前空間)のことを示します。
 以下の例を考えましょう。

// (1)整数xとyの平均値を整数で求める int ave(int x, int y) { return (x + y) / 2; } // 2:整数xとyの平均値を実数で求める double ave(int a, int b) { return (double)(a + b) / 2; }

 二つの関数は返却値型や仮引数の名前が異なるものの、仮引数の型の並びが同一です。すなわち、二つの関数の呼出し情報は一致しています。同一の呼出し情報をもつ関数を多重定義することはできませんので、このプログラムは、コンパイルエラーとなります。
 なお、関数がクラスのメンバである場合は、関数自身のcv修飾子及びそれを宣言しているクラスも呼出し情報に含められます。また、関数テンプレートの特殊化に対する呼出し情報では、テンプレート実引数の型も含められます。


■ 根拠 ■
標準C++ §1.3.10 signature
標準C++ 2nd §1.3.10 signature
標準C++ 3rd §1.3.17~§1.3.22 signature

戻る

BohYoh.comロゴ