下面是代碼(也在http://pastebin.com/yw5z2hnG):C++太多的析構函數調用,所以幾個對象
#include <iostream>
#include <vector>
using namespace std;
class X
{
public:
int i;
X();
~X();
};
X::X()
{
i = 1;
cout << "---constructor" << '\n';
}
X::~X()
{
cout << "***desctructor" << '\n';
}
int main()
{
vector<X> *vx = new vector<X>;
cout << "------------------------------------" << endl;
vx->push_back(X());
vx->push_back(X());
vx->push_back(X());
vx->push_back(X());
vx->push_back(X());
cout << "------------------------------------" << endl;
delete vx;
}
我得到的輸出:
------------------------------------
---constructor
***desctructor
---constructor
***desctructor
***desctructor
---constructor
***desctructor
***desctructor
***desctructor
---constructor
***desctructor
---constructor
***desctructor
***desctructor
***desctructor
***desctructor
***desctructor
------------------------------------
***desctructor
***desctructor
***desctructor
***desctructor
***desctructor
我不明白爲什麼有那麼多的析構調用。
這是一個重複多次......但我找不到它們導致人們問這個問題通常不知道隱式定義的拷貝構造函數:p我總覺得有趣的是,無知可能阻止人們學習,因爲它阻止了人們有效地查詢。 – 2010-08-29 11:34:25