Comment puis-je implémenter une fonction en C++ imitant ce comportement ?
Cela dépend de ce que vous allez faire exactement à l'intérieur de cette fonction dans le cas de 3 arguments réels et de 4 arguments réels. Si ces actions sont très similaires -- alors vous feriez mieux d'opter pour la fonction std::optional<>
comme suggéré précédemment.
Cependant, si ces actions sont substantiellement différentes, alors vous pouvez tout simplement surcharge cette fonction. C'est-à-dire qu'il faut deux fonctions portant le même nom : une pour 3 arguments et une autre pour 4 arguments, avec des corps absolument indépendants. Le compilateur sera capable de déterminer quelle implémentation appeler.
#include <iostream>
void MyFunc(int a, int b, int c)
{
std::cout << "3-argument version called." << std::endl;
}
void MyFunc(int a, int b, int c, int d)
{
std::cout << "4-argument version called." << std::endl;
}
int main()
{
MyFunc(1, 2, 3);
MyFunc(1, 2, 3, 4);
}