Let T a C++ class.
Is there any difference in behaviour between the following three instructions?
T a;
T a();
T a = T();
Does the fact that T provides an explicit definition for a constructor that takes no parameter change anything with respect to the question?
Follow-up question: what about if T provides a definition for a constructor that takes at least one parameter? Will there then be a difference in behaviour between the following two instructions (in this example I assume that the constructor takes exactly one parameter)?
T a(my_parameter);
T a = T(my_parameter);
T a; performs default initialization.
T a = T(); performs value initialization.
T a(); does not declare a variable named a. It actually declares a function named a, which takes no arguments and whose return type is T.
The difference between default initialization and value initialization is discussed here.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With