Le type de valeur de retour de la fonction en C++ est déduit par le compilateur. Le principe est d'analyser le corps de la fonction via une métaprogrammation de modèle (TMP), et d'en déduire le type en fonction de la valeur de retour de l'instruction return : Instruction de retour unique : La valeur de retour est le type de l'expression de retour. Instructions de retour multiples : la valeur de retour est le type commun de toutes les expressions de retour. Pas d'instruction return : le type de valeur de retour est void. L'inférence de type simplifie le code, élimine les erreurs d'incompatibilité de type, améliore la lisibilité et réduit la duplication de code.
Principes et cas pratiques d'inférence de type de valeur de retour de fonction en C++
En C++, le type de valeur de retour d'une fonction est généralement déclaré explicitement. Cependant, depuis la norme C++11, le compilateur peut déduire le type de retour d’une fonction. Cela simplifie l'écriture de code et élimine les erreurs du compilateur dues à des incompatibilités de types.
Principe de l'inférence de type
Le compilateur C++ implémente l'inférence de type à l'aide d'une technique appelée métaprogrammation de modèles (TMP). TMP permet d'effectuer des opérations sur les types et les modèles au moment de la compilation. Pour la déduction du type de retour, le compilateur examine le corps de la fonction et tente de déterminer le type de la valeur de retour.
Règles d'inférence de type
Le compilateur suit les règles suivantes pour déduire le type de valeur de retour :
return
dans le corps de la fonction, le type de valeur de retour est le expression renvoyée dans le type d'instruction. return
语句,则返回值类型为该语句中返回表达式的类型。return
语句,则返回值类型为所有返回表达式的公共类型。return
语句,则返回值类型为 void
return
, le type de valeur de retour est le type commun de toutes les expressions de retour. S'il n'y a pas d'instruction return
dans le corps de la fonction, le type de valeur de retour est void
.
Cas pratique
L'exemple suivant montre comment utiliser l'inférence de type de retour de fonction :
// 推断返回值类型为 int int get_number() { return 42; } // 推断返回值类型为 vector<int> vector<int> get_numbers() { return {1, 2, 3, 4}; }
Avantages
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!