In the following code:
struct aa
{
int a;
aa( int x):a(x){ cout<<"const is called"<<endl;}
~aa(){cout <<"dest is called"<<endl;}
aa( aa&& obj)
{
a = obj.a;
cout<<"move const is called"<<endl;
}
};
int main ()
{
vector<aa> v1;
v1.push_back(aa(9));
v1.emplace_back(9);
}
- when only push_back is used, result are expected ( Move constructor , constructor and destructor are called .)
Results:
const is called
move const is called
dest is called
dest is called
- When only emplace_back is used , result are expected ( No Move constructor is called , only constructor and destructor are called .)
Results:
const is called
dest is called
- but When I combined push_back with emplace_back, why move constructor is called for emplace_back while it was not called when used separately) ?
Results:
const is called
move const is called
dest is called
const is called
move const is called
dest is called
dest is called
dest is called
Aucun commentaire:
Enregistrer un commentaire