Juste pour être sûr, la seule et unique différence entre struct et class est que, par défaut, les membres sont "public" dans struct et "private" dans class. Correct ?
Version imprimable
Juste pour être sûr, la seule et unique différence entre struct et class est que, par défaut, les membres sont "public" dans struct et "private" dans class. Correct ?
Correct! ;)
et l'héritage par défaut qui est publique avec les struct et privé avec les class
C'est valable tant que tu programmes en vrai C++.
En .Net, c'est plus compliqué.
Y'as pas une différence au niveau de la copie par hasard en .NET ?
Genre structA=structB n'est pas traité de la même manière que ClassA=ClassB ?
C'est ça. Le terme "structure" en .Net (Structure en VB, struct en C#, value class ou value struct en C++/CLI) désigne un type valeur, qui:
- Est forcément POD (constructeur par défaut et constructeur de copie sont forcément ceux générés par le compilo, pas de destructeur), et donc blittable
- Peut contenir des références, par contre
- Est alloué directement "sur place" dans la pile ou dans un autre type, plutôt qu'indépendamment sur le tas (sauf boxing)
- Est complètement cloné par l'opérateur =
- Est le plus souvent immuable (mais assignable). On peut faire un type valeur avec des modifieurs, mais ça n'est pas conseillé.
En C++ la seul différence entre une class et une struct est :
La structure n'a pas les notions de private et de protected, d'où le fait que ça soit par défaut en public.