Qu'est-ce que cela signifie quand je dans mon code déclare quelque chose comme: Foo * foo();
Foo * foo();
Très difficile à dire sans savoir ce qui est Foo.
Si Foo est un type, par ex. struct Foo{};
, alors cela déclare une fonction nommée 'foo' qui renvoie un pointeur sur un type appelé Foo. Cela semble être le cas dans votre message en fonction de votre utilisation par la suite (et aussi le titre de la poste).
Si Foo est un #define e.g. #define Foo 1
, alors ce n'est pas une déclaration mais une expression qui multiplie 1 par la valeur de retour de 'foo' dans le cas où l'opérateur * est défini pour les types d'opérandes impliqués.
Quels sont les avantages que cela procure?
Difficile à dire à nouveau sans savoir ce qu'est Foo.
Aussi Qu'est-ce que cela signifie si je le déclare dans le C++ source au-dessus de toutes les méthodes
Déclarer « foo » (si elle est en effet une déclaration) le plus haut possible dans les moyens de l'unité de traduction plus grande la portée provisoire du nom «foo».
void f1(){g();} // not OK, 'g' not known
void f(){}
void g(){f();} // OK, f() is known
BTW, ne Foo
(CAPS F) ont un opérateur surchargé ->
?
Qu'est-ce que votre livre a à dire? – GManNickG