81 votes

Je ne comprends pas pourquoi cela compile

Il me manque certainement quelque chose, mais je ne comprends pas pourquoi cela compile (avec g++ et clang++):

 struct A
{
};
struct B
{
};

int main()
{
  A a(B);
}

Tout d'abord, B est un type... pas une valeur. Comment dois-je interpréter ce code ?

86voto

Brian Points 15388

Elle est interprétée comme la déclaration d'une fonction nommée a , qui prend un argument de type B et renvoie A .

15voto

machine_1 Points 1143

C'est simplement une déclaration de fonction déclarant a comme une fonction retournant A et prenant un paramètre sans nom de type B .

Il est valide car les déclarations de fonction, par opposition aux définitions de fonction, sont autorisées dans les définitions de fonction.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X