Maison > développement back-end > C++ > qualificatif const pour les paramètres de pointeur de fonction C++

qualificatif const pour les paramètres de pointeur de fonction C++

WBOY
Libérer: 2024-04-20 18:36:01
original
830 Les gens l'ont consulté

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

Qualificateur const pour les paramètres de pointeur de fonction C++

Un pointeur de fonction est un pointeur vers une fonction, qui offre la possibilité d'appeler dynamiquement des fonctions au moment de l'exécution. Les paramètres de pointeur de fonction sont souvent utilisés pour transmettre des rappels à d’autres fonctions.

Le qualificatif const peut être appliqué aux paramètres du pointeur de fonction pour spécifier que la fonction pointée par le pointeur de fonction ne peut pas être modifiée. Cela garantit que la fonction pointée par le pointeur de fonction n'est pas accidentellement écrasée ou modifiée pendant l'appel. const 限定符可以应用于函数指针参数,以指定函数指针指向的函数不能被修改。这确保了函数指针指向的函数在调用期间不会被意外覆盖或修改。

语法

void foo(void (*func)(int));
Copier après la connexion

在上面的示例中,foo 函数接受一个函数指针参数 func,该函数指针指向一个接受单个整型参数的函数。const 限定符指定指向的函数不能被修改。

实战案例

考虑一个计算两个整数最大公约数的函数:

int gcd(int a, int b) {
    while (b) {
        int temp = a % b;
        a = b;
        b = temp;
    }
    return a;
}
Copier après la connexion

我们可以通过将 gcd 函数作为一个函数指针参数传递来创建一个函数,该函数返回两个数字的最小公倍数:

int lcm(int a, int b) {
    return a * b / gcd(a, b);
}
Copier après la connexion

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;
}
Copier après la connexion

输出:

36
Copier après la connexion

在此示例中,gcd_ptr 是指向 gcd 函数的 const 函数指针,因为它使用 std::function

Syntaxe

rrreeeDans l'exemple ci-dessus, la fonction foo accepte un paramètre de pointeur de fonction func, qui pointe vers une fonction qui accepte un seul entier paramètre La fonction. Le qualificatif const spécifie que la fonction pointée ne peut pas être modifiée. 🎜

Cas pratique

🎜Considérons une fonction qui calcule le plus grand commun diviseur de deux entiers : 🎜rrreee🎜Nous pouvons créer une fonction en passant la fonction gcd comme argument de pointeur de fonction, Cette fonction renvoie le plus petit commun multiple de deux nombres : 🎜rrreee🎜Dans la fonction main, nous pouvons utiliser la classe wrapper std::function pour créer un pointeur vers const de la fonction >gcd : 🎜rrreee🎜Sortie : 🎜rrreee🎜Dans cet exemple, gcd_ptr est un pointeur vers le gcd pointeur de fonction function code>const, car il est créé à l'aide de la classe wrapper std::function, qui garantit que la fonction pointée ne peut pas être modifiée. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal