Consider the below program:
class A
{
public:
A(int i)
{
cout<<"Called"<<endl;
}
};
int main()
{
vector<A> v(5,A(1));
return 0;
}
I am getting the output: http://ideone.com/81XO6
Called
Why the constructor gets called only once even if we are constructing 5 objects?
How vector is internally handled by the compiler?
Your class has two constructors and you are watching only one of them.
std::vectorcreates its elements by copy-constructing them from the original element you supplied. For that purpose, the copy-constructor of classAis called 5 times in your example.The copy-constructor for
Ain your example is implicitly declared and defined by the compiler. If you so desire, you can declare and define it yourself. If you print something from it, you will see that it is called at least 5 times.