帮助这里是代码:需要与理解STL向量(在邮件的正文简单的代码)
#include <vector>
#include <iostream>
class A
{
public:
A() { std::cout << __FUNCTION__ << "\n"; }
~A() { std::cout << __FUNCTION__ << "\n"; }
A& operator=(const A&) { std::cout << __FUNCTION__ << "\n"; return *this;}
};
int main(int argc, char* argv[])
{
std::vector<A> as;
A a;
as.push_back(a);
as.push_back(a);
return 0;
}
这里是我得到的输出:
A::A
A::~A
A::~A
A::~A
A::~A
我理解的输出第一行是从创建'a'时从调用到c-tor。对d-tor的一个要求也属于a。 另外三个对A ::〜A()的调用呢,它们来自哪里? 为什么有更多的d-tor调用比c-tor的调用要多? 容器在向其元素添加副本时如何克隆“a”? 最后,是输出实现定义还是还有其他可能的输出?