मैं अभी सीए ++ में आरएआईआई के साथ शुरुआत कर रहा हूं और थोड़ा परीक्षण केस स्थापित कर रहा हूं। या तो मेरा कोड गहराई से उलझन में है, या आरएआईआई काम नहीं कर रहा है! (मुझे लगता है कि यह पूर्व है)।सी ++ आरएआईआई काम नहीं कर रहा है?
अगर मैं चलाएँ:
#include <exception>
#include <iostream>
class A {
public:
A(int i) { i_ = i; std::cout << "A " << i_ << " constructed" << std::endl; }
~A() { std::cout << "A " << i_ << " destructed" << std::endl; }
private:
int i_;
};
int main(void) {
A a1(1);
A a2(2);
throw std::exception();
return 0;
}
अपवाद बाहर टिप्पणी की मैं साथ
:
A 1 constructed
A 2 constructed
A 2 destructed
A 1 destructed
अपेक्षा के अनुरूप है, लेकिन अपवाद के साथ मैं:
A 1 constructed
A 2 constructed
terminate called after throwing an instance of 'std::exception'
what(): std::exception
Aborted
तो
मेरी वस्तुओं भले ही वे गुंजाइश से बाहर नहीं जा रहे हैं। क्या यह आरएआईआई के लिए पूरा आधार नहीं है।
पॉइंटर्स और सुधारों की बहुत सराहना की!
आपको भी सी ++ में एक बग मिला! =) – Eric
दिलचस्प किनारे का मामला! –
आपने RAII तोड़ दिया :( – rpg