次のコード・フラグメントは、複数の関数宣言を示しています。 最初の部分は、2 つの整数の引き数を採用し、戻りの型が void である関数 f を宣言しています。
void f(int, int);
次のコードは、固定文字へのポインターを使用して整数を戻す関数へのポインター p1 を宣言します。
int (*p1) (const char*);
次のコードは、関数 f1 を宣言し、 関数 f1 は、1 つの整数の引き数を取り、整数の引き数を取って整数を戻す関数へのポインターを戻します。
int (*f1(int)) (int);
関数 f1 の複雑な戻りの型に対して、 上記の関数の代わりに、typedef を使用することができます。
typedef int f1_return_type(int); f1_return_type* f1(int);
このセクションでのここから先の説明は、C++ だけに適用されます。
次の宣言は、最初の引き数として定数整数を取る外部関数 f2() の宣言です。 この宣言は、可変数で可変型の他の引き数を持つことができ、型 int を戻します。
int extern f2(const int ...);
ただし、C では、省略符号の前にコンマが必要です。
int extern f2(const int, ...);
関数 f3 は、戻りの型 int を持っています。 そして、関数 f2 から戻された値であるデフォルト値を持つ、int 引き数を取ります。
const int j = 5; int f3( int x = f2(j) );
関数 f6 は、クラス X の const クラス・メンバー関数で、 引き数は取りません。int の戻りの型を持っています。
class X { public: int f6() const; };
関数 f4 は、引き数を取らず、 戻りの型が void で、X 型および Y 型のクラス・オブジェクトをスロー (throw) することができます。
class X; class Y; // ... void f4() throw(X,Y);
関数 f5 は、引き数を取らないで、戻りの型 void を持っています。 この関数は、任意の型の例外をスローする場合、unexpected() を呼び出します。
void f5() throw();
関連参照