Đây là mã (cũng tại http://pastebin.com/yw5z2hnG):C++ Quá nhiều destructors gọi là quá ít đối tượng
#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;
}
tôi nhận được đầu ra như:
------------------------------------
---constructor
***desctructor
---constructor
***desctructor
***desctructor
---constructor
***desctructor
***desctructor
***desctructor
---constructor
***desctructor
---constructor
***desctructor
***desctructor
***desctructor
***desctructor
***desctructor
------------------------------------
***desctructor
***desctructor
***desctructor
***desctructor
***desctructor
Tôi không hiểu tại sao rất nhiều destructors là gọi là.
bản sao này nhiều lần ... nhưng tôi không thể tìm thấy chúng khiến mọi người hỏi câu hỏi này thường không biết về các nhà xây dựng bản sao được xác định ngầm: p Tôi luôn thấy buồn cười rằng sự thiếu hiểu biết có thể ngăn cản người khác học vì nó ngăn cản người ta truy vấn một cách hiệu quả. –