2012-02-24 5 views
6
class A{ 
    private: 
     string a; 
    public: 
     A():a("hello world"){}; 
     A(const string & arg):a(arg){}; 
     void put()const{cout<<a;}; 
}; 

A aaa(); 
A bbb; 

तो A aaa(); और A bbb; के बीच क्या अंतर है aaa एक समारोह है?अंतर; और एएए();

+0

एक तीसरा विकल्प है। कन्स्ट्रक्टर को स्पष्ट रूप से कॉल करना। एएए = ए(); –

+0

संभावित डुप्लिकेट [बिना किसी तर्क के कन्स्ट्रक्टर को कॉल करने के लिए ब्रैकेट के खाली सेट का उपयोग करने में त्रुटि क्यों है?] (Http://stackoverflow.com/questions/180172/why-is-it-an-error-to -ज-रिक्त-सेट-ऑफ-ब्रैकेट-टू-कॉल-ए-कन्स्ट्रक्टर-साथ-नहीं) –

उत्तर

11

हां, पहला व्यक्ति फ़ंक्शन घोषणा के रूप में व्याख्या किया जाता है। इसे Most Vexing Parse कहा जाता है।

+1

'ए aaa();' "सबसे अधिक परेशान पार्स" का उदाहरण नहीं है। सबसे परेशान पार्स यह दर्शाता है कि जब आप ऑब्जेक्ट को डिलीवर करने का प्रयास करते हैं और उसके सभी कन्स्ट्रक्टर पैरामीटर के लिए अस्थायी प्रारंभकर्ता को पास करते हैं। जैसे 'बी सी (डी());' –