i'm trying to make a difference between different types of initializing objects. But I've read here(middle to end of page) that if you try to call Class object();
this will not instantiate an object, rather will define a function? I tried and it is so, but I don't understand why.
Circle c
; // default constructor called
Circle c()
; // function declaration (default constructor NOT called)
Circle c{}
; // default constructor called
Here is how i tried to reproduce:
class Circle
{
float r;
public:
Circle()
{
cout << "default constructor" << endl;
}
Circle(float r)
{
this->r = r;
}
};
In main()
I'm trying to instantiate an object like this Circle c()
and it does not call the parameter less constructor. I was expecting seeing in console the message "default constructor". What does the syntax Circle c()
does if it is not calling the default constructor? How is that a valid function declaration?