मेरे कार्यक्रम में कुछ हुआ, और मुझे नहीं पता कि यह होना चाहिए या नहीं। और अगर ऐसा है, तो मैं क्यों नहीं दिख रहा है ..ऑब्जेक्ट्स के वेक्टर को प्रारंभ करने और आकार देने पर विनाशक को क्यों बुलाया जाता है?
कोड यह रहा:
#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;
}
और यहाँ उत्पादन है:
creating
deleting
creating
deleting
creating
deleting
creating
deleting
creating
deleting
END
deleting
deleting
[..more deleting here]
मुझे समझ में क्यों नाशक के बाद कहा जाता है " अंत "संदेश, लेकिन पहले, मैं नहीं करता। मैंने सोचा कि जब वेक्टर का आकार बदलता है, कक्षा के निर्माता को बुलाया जाता है, लेकिन विनाशक क्यों?
आप प्रतिलिपि ctor उपयोगकर्ता को परिभाषित करना भूल गए हैं। यदि आप (आउटपुट के साथ) करते हैं और प्रत्येक कॉल के आकार बदलने के बाद आउटपुट डालते हैं, तो आप देखेंगे कि क्या हो रहा है। –