Programımda bir şey oldu ve olması gerekip gerekmediğini göremiyorum. Ve eğer, neden görmüyorum .. İşte Nesnelerin bir vektörünü başlatırken ve yeniden boyutlandırırken yıkıcı neden çağrılır?
kod:#include <iostream>
#include <vector>
using namespace std;
class A{
public:
A();
~A();
};
A::A(){
cout << "creating" << endl;
}
A::~A(){
cout << "deleting" << endl;
}
int main(void){
vector<vector<A > > vec;
vec.resize(5);
for(int i = 0; i < 5; ++i){
vec[i].resize(5);
}
cout << "END" << endl;
return 0;
}
Ve burada çıkış var: Ben yıkıcı sonra denir anlamak
creating
deleting
creating
deleting
creating
deleting
creating
deleting
creating
deleting
END
deleting
deleting
[..more deleting here]
" END "mesajı, ama önce, ben yok. Vektör yeniden boyutlandırıldığında, sınıfın kurucusunun çağrıldığını, ancak neden yıkıcı olduğunu düşündüm?
Kopyalama katsayısını kullanıcı tanımlıyorsunuz. Eğer (çıktı ile) yaparsanız ve yeniden boyutlandırmak için her bir çağrıdan sonra bir çıkış yaparsanız(), neler olduğunu göreceksiniz. –