関数ポインターは関数へのポインターであり、実行時に関数を動的に呼び出す機能を提供します。関数ポインターのパラメーターは、他の関数にコールバックを渡すためによく使用されます。
const
修飾子を関数ポインターのパラメーターに適用して、関数ポインターが指す関数を変更できないことを指定できます。これにより、関数ポインタが指す関数が呼び出し中に誤って上書きされたり変更されたりすることがなくなります。
void foo(void (*func)(int));
上記の例では、foo
関数は関数ポインター パラメーター func
を受け取ります。これは、単一の関数を受け入れる関数を指します。整数パラメータ関数。 const
修飾子が指す関数は変更できません。
2 つの整数の最大公約数を計算する関数を考えてみましょう:
int gcd(int a, int b) { while (b) { int temp = a % b; a = b; b = temp; } return a; }
関数ポインターとして gcd
関数を渡すことができます。パラメーターを渡して、2 つの数値の最小公倍数を返す関数を作成します。
int lcm(int a, int b) { return a * b / gcd(a, b); }
main
関数では、std::function
ラッパー クラスを使用できます。 gcd
関数を指す const
関数ポインターを作成します:
int main() { std::function<int(int, int)> gcd_ptr = std::function<int(int, int)>(gcd); int result = lcm(12, 18); std::cout << result << std::endl; return 0; }
出力:
36
この例では、gcd_ptr
gcd
関数を指す const
関数ポインタです。これは、std::function
ラッパー クラスを使用して作成されているため、指定された関数は変更されました。
以上がC++ 関数ポインター パラメーターの const 修飾子の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。