+ 2
What is the diffrence between "int k=2; " and "int k{2};"
why do we need to declare the value in " {}" ??
1 Odpowiedź
+ 2
Initializing with braces is called List initialization, which was introduced in C++ in 2011. Which means it doesn't allow narrowing, I'm gonna copy/paste from the Author's book itself:
• An integer cannot be converted to another integer that cannot hold its value. For example, char to int is allowed, but not int to char.
• A floating-point value cannot be converted to another floating-point type that cannot hold its value. For example, float to double is allowed, but not double to float.
• A floating-point value cannot be converted to an integer type.
• An integer value cannot be converted to a floating-point type.
The only situation where = is preferred over {} is when using auto keyword to get the type determined by the initializer. It takes time to kick in.
Research more on Stackoverflow, people have amazing and more thorough answers.