In first case:
X x, the default constructor is called for
x. Note that in second case
x is not constructed with an empty set of parentheses - in fact, empty parentheses cannot be used to call the default constructor:
X x1; // ok, default constructor called
X x2(); // oops, default constructor NOT called
This is because the empty set of parentheses would make of
x2 a function declaration instead of an object declaration: It would be a function that takes no arguments and returns a value of type
X.
Source:
Constructors
Login in to like
Login in to comment