当我初始化一个C容器(如std :: list)时,复制构造函数是否被调用?
作者:互联网
当我初始化STL容器时,例如列表<矢量<炭> >使用例如my_list.push_back(vector< char>(5000,’T’))是在构建后复制的吗?或者编译器是否调用list<中的构造函数?矢量<炭> >本身?
解决方法:
在C 03中,push_back被定义为void push_back(const T& x);.这意味着您正在构建一个向量,并且对此类时间的const引用正在传递给列表.然后列表在内部调用复制构造函数以存储此类元素的副本.
在C 11中,void push_back(T& x)有一个额外的定义;对你的时间向量进行右值引用,并导致在内部调用移动构造函数来初始化列表所持有的副本.
标签:move-constructor,c,copy-constructor 来源: https://codeday.me/bug/20190729/1576584.html