幫助這裏是代碼:需要與理解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」? 最後,是輸出實現定義還是還有其他可能的輸出?