Ive देखा की तरह क्यूटी जीयूआई वाक्य रचना निम्नलिखित हर जगह:नष्ट हो जाएगा() उत्सर्जित किया जाएगा यदि QObject से प्राप्त वर्ग के निर्माता फेंकता है?
myDialog::myDialog(QWidget *parent, Qt::WFlags flags):QDialog(parent, flags)
{
QPushButton *button = new QPushButton("&Download", this);
QVBoxLayout *layout = new QVBoxLayout(this);
//something that can throw here
layout ->addWidget(button);
setLayout(layout);
}
मैं हमेशा अगर यह एक अपवाद की स्थिति में रिसाव कर सकते हैं क्योंकि "इस" मैं करने के लिए एक अभिभावक के रूप दे रही हूँ आश्चर्य किया है बटन और लेआउट पूरी तरह से निर्मित नहीं है, इसलिए यह अपने बच्चों को नष्ट नहीं कर सकता है।
मैंने इसे MSVC2010 Qt4.8.3 में आज़माया और ऐसा लगता है जैसे बेस QObject क्लास पूरी तरह से बनाई गई है (जो कि पहले किया जाता है) कन्स्ट्रक्टर में अन्य वस्तुओं को "यह" पास करना ठीक है, वे सही ढंग से नष्ट हो जाएंगे।
मुझे यह गारंटी देने वाले क्यूटी दस्तावेज़ों में जगह नहीं मिली है, क्या कोई मुझे इस पर इंगित कर सकता है, इसलिए मुझे आश्वासन है कि भविष्य में यह नहीं बदलेगा?
क्यूओब्जेक्ट के विनाशक को नहीं कहा जाएगा यदि मेरा डियालॉग का कन्स्ट्रक्टर फेंकता है। मूल कोड के साथ एक रिसाव होगा। –
मुझे नहीं लगता कि यह सही है। बेस क्लास के विनाशक को अभी भी बुलाया जाना चाहिए। http://stackoverflow.com/questions/3759270/will-the-destructor-of-the-base-class-called-if-an-object-throws-an-exception-in – Phlucious
आप फिर से सही हैं। इंगित करने के लिए धन्यवाद। –