2013-03-17 10 views
6

निम्नलिखित 2 दो प्रारंभिकताओं के बीच क्या अंतर है?सी ++ कक्षा शुरूआत बिना और बिना ब्रांड्स

class Pod { 
public: 
    int a, b; 
}; 

Pod *p1 = new Pod; 
Pod *p2 = new Pod(); 
+0

जैसा कि जेम्सएमसी लॉफलिन ने कहा, कोई फर्क नहीं पड़ता, इसके अलावा यह पीओडी तक ही सीमित नहीं है। – MFH

+0

@ डेविड रोडिगुएज़-ड्राईबेस कैसा है? –

+0

@JamesMcLaughlin: मानक में सेक्शन 8.5 पढ़ें :) –

उत्तर

8

पहले मामले में वस्तु अप्रारंभीकृत छोड़ दिया जाता है, जबकि दूसरे मामले में वस्तु होने की गारंटी है मूल्य प्रारंभ, जो प्रकार के रूप में इस मामले में पॉड है तो इसका मतलब है शून्य प्रारंभ

+1

देखें हालांकि अंतर है अनिवार्य रूप से 'int' के मामले में कोई भी नहीं, पहले मामले में सदस्यों को प्रारंभिक के बजाय डिफ़ॉल्ट रूप से प्रारंभ किया जाता है। –

+0

@ जेरीकॉफिन: हां मुझे स्पष्ट होना चाहिए था, वह हिस्सा भी इस तथ्य के कारण है कि यह एक पीओडी है, जिसके लिए * डिफ़ॉल्ट-प्रारंभिक * का अर्थ है कि ऑब्जेक्ट * अनियमित * –

+1

@ डेविडरोड्रिगुएज़-ड्राईबीस छोड़ दिया गया है ... लेकिन सी ++ 11 में, यह पीओडी प्रकारों तक सीमित नहीं है (आईआईआरसी, यह सभी तुलनीय प्रतिलिपि प्रकारों की कुछ व्यापक श्रेणी पर लागू होना चाहिए)। –

संबंधित मुद्दे