ये दो पंक्तियां तथाकथित प्रारंभिक सूची हैं और इस वर्ग के प्रत्येक उदाहरण के "निर्माण" समय पर निष्पादित की जाती हैं। प्रत्येक वर्ग को विरासत में रखने वाले प्रत्येक वर्ग में इस सूची में सुपरक्लास 'कन्स्ट्रक्टर को कॉल करना चाहिए।
तुम भी लिख सकते हैं:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent)
{
ui = new Ui::MainWindow();
ui->setupUi(this);
}
जो एक बेहतर पठनीय मिल सका। लेकिन प्रारंभिक सूची का उपयोग थोड़ा तेज है और संकलक द्वारा अनुकूलित किया जा रहा है। ध्यान दें कि इन सूचियों का उपयोग केवल रचनाकारों में किया जा सकता है और आप ऑब्जेक्ट के किसी भी फ़ंक्शन को कॉल नहीं कर सकते - क्योंकि यह अभी तक "लाइव" नहीं है। लेकिन आप कुछ विशेषताओं का मान सेट और उन्हें करने के लिए निम्न उदाहरण की तरह, निम्नलिखित कथनों (उदाहरण के लिए कोड अतिरेक से बचने के लिए) में उल्लेख कर सकते हैं:
#define DEFAULT_VALUE 1.0
class MyClass {
public:
MyClass() :
value1(DEFAULT_VALUE),
value2(value1)
{
}
MyClass(qreal value) :
value1(value),
value2(value1)
{
}
private:
qreal value1;
qreal value2;
};
ध्यान दें कि सबसे compilers आप एक चेतावनी है, तो के आदेश दे आपकी प्रारंभिक सूची में सदस्य वर्ग परिभाषा में क्रम से मेल नहीं खाते हैं।
तो यह केवल निर्माण कार्य में उपयोग किया जाता है? या किसी भी तरह के fucntions में इस्तेमाल किया जा सकता है? – Sean
केवल एक निर्माता में। – TonyK
.. लेकिन सभी प्रकार के रचनाकारों में, _copy constructors_ सहित। – MSalters