ホームページ >バックエンド開発 >C++ >C++ 関数ポインター パラメーターの const 修飾子

C++ 関数ポインター パラメーターの const 修飾子

WBOY
WBOYオリジナル
2024-04-20 18:36:01828ブラウズ

C++ 函数指针参数的 const 限定符

関数ポインター パラメーターの C const 修飾子

関数ポインターは関数へのポインターであり、実行時に関数を動的に呼び出す機能を提供します。関数ポインターのパラメーターは、他の関数にコールバックを渡すためによく使用されます。

const 修飾子を関数ポインターのパラメーターに適用して、関数ポインターが指す関数を変更できないことを指定できます。これにより、関数ポインタが指す関数が呼び出し中に誤って上書きされたり変更されたりすることがなくなります。

Syntax

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。