Je ne l’ai jamais vu auparavant. Je pensais que c’était une faute de frappe pour “:: sample”, mais quand j’ai vu cela comstack, j’étais très confus. Quelqu’un peut-il m’aider à découvrir s’il vous plaît? Je ne pense pas que ce soit un label goto
.
void f() { class: sample { // there were some members declared here } x; }
C’est une classe sans nom, et les deux-points signifient qu’il hérite en privé de l’ sample
. Voir comme
class Foo : private sample { // ... }; Foo x;
Je pense que cela définit une classe sans nom dérivée de l’ sample
. Et x
est une variable de cette classe sans nom.
struct sample{ int i;}; sample f() { struct : sample { // there were some members declared here } x; xi = 10; return x; } int main() { sample s = f(); cout << si << endl; return 0; }
Exemple de code sur ideone: http://www.ideone.com/6Mj8x
PS: j'ai changé de class
en struct
pour des raisons d'accessibilité!
C’est une classe sans nom.
Vous pouvez les utiliser, par exemple, pour remplacer les fonctions locales en pré-C ++ 11:
int main() { struct { int operator() (int i) const { return 42; } } nice; nice(0xbeef); }
Les deux-points suivis d’un sample
signifient simplement dériver de l’ sample
utilisant l’inheritance par défaut . (pour structs: public, pour les classes: private)