+ 1
constructor calling
#include<iostream> using namespace std; class A { public: A() { cout<<"zero parameterozed constructor"; } A(int a=0) { cout<<"default parameterized constructor"; } }; int main() { A a(); } why its giving no output?? plz explain
1 Answer
+ 1
A a(); is a function declaration, it's not constructing an object.
https://en.wikipedia.org/wiki/Most_vexing_parse
Use A a; to initialize an object without arguments.
But with the code you have this still wouldn't compile because the call is ambiguous.
A() requires 0 arguments
A(int a = 0) requires 0 or 1 argument(s)
C++ has 2 options to pick from, but because C++ can't read your mind it just refuses to compile it.