À QUOI ÇA SERT ?
C++ possède historiquement plusieurs syntaxes d’initialisation.
Les accolades ont été introduites pour rendre l’initialisation plus uniforme et éviter certaines conversions dangereuses.
1. EXEMPLES
Code: Select all
int x{42};
double d{3.14};
std::string text{"Hello"};
2. ZÉRO
Code: Select all
int x{};
Code: Select all
double d{};
Code: Select all
int* ptr{};
C’est une excellente habitude.
3. NARROWING
Code: Select all
double d{3.14};
int x{d};
4. STRUCT
Code: Select all
struct Point
{
int x;
int y;
};
Point p{10, 20};
5. DESIGNATED INITIALIZERS
Code: Select all
Point p{
.x = 10,
.y = 20
};
Parce que le sens de chaque valeur est visible immédiatement.
Avec :
Code: Select all
Config c{1, 0, 4096, true};
Avec :
Code: Select all
Config c{
.version = 1,
.flags = 0,
.bufferSize = 4096,
.enabled = true
};
À RETENIR
{} :
- syntaxe cohérente ;
- initialisation explicite ;
- réduction des variables non initialisées ;
- protection contre certains narrowing.
