I have a question : what constructor is used when you create an instance of a class with ClassName instance()
in C++ ?
Example:
#include <iostream>
using namespace std;
class Test
{
private:
Test()
{
cout << "AAA" << endl;
}
public:
Test(string str)
{
cout << "String = " << str << endl;
}
};
int main()
{
Test instance_1(); // instance_1 is created... using which constructor ?
Test instance_2("hello !"); // Ok
return 0;
}
Thanks !
Tricky! You would expect compilation to fail as default constructor is private. However, it compiles and nothing is created. The reason?
Test instance_1();
... is just a function declaration! (Which returns Test
and takes nothing.)
The statement Test instance_1();
doesn't call a constructor at all, because it's not defining a variable - instead, it's declaring a function called instance_1
that returns an object of type Test
. To create an instance using the 0-argument constructor, you'd use Test instance_1;
.
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