प्रारंभिक सूची आदेश कक्षा में परिवर्तनीय क्रम से मेल नहीं खाता है, तो जीसीसी ने अपना फिट क्यों फेंक दिया?आरंभकर्ता सूची आदेश सदस्य सदस्य घोषणा आदेश क्यों शुरू करना चाहिए?
class myClass
{
public:
int A;
int B;
myClass();
};
myClass::myClass() :
B(1),
A(2)
{}
परिणाम देगा में:
file.h:274: warning: 'myClass::A' will be initialized after
file.h:273: warning: 'int myClass::B
file.cpp:581: warning: when initialized here
कोई विशिष्ट कारण चेतावनी के इस प्रकार जारी किया जाता है है? क्या कक्षा के भीतर परिभाषित किए गए अलग-अलग क्रम में कक्षा के वैरिएबल को प्रारंभ करने से जुड़े कोई जोखिम हैं?
(ध्यान दें, वहाँ a question जो विषय को छू लेती है, लेकिन जवाब काफी हैं के बारे में कोई औचित्य दिए बिना ", क्योंकि यह होना चाहिए कि" क्यों यह आदेश दिया जाना चाहिए, या क्या इस से बाहर होने के साथ गलत क्या है आदेश - मैं जानना चाहता हूं कि ऐसा प्रतिबंध क्यों मौजूद है - क्या कोई ऐसा उदाहरण दे सकता है जहां यह संभवतः पीछे हट सकता है?)
@ShafikYaghmour होगा: क्योंकि इस तरह के एक मौज है मानक प्रतिबंध नहीं है इसके लेखकों के। प्रत्येक प्रतिबंध कुछ विचारों का परिणाम है। तो, नहीं, "क्योंकि मानक इतना कहता है" अब तक पर्याप्त जवाब नहीं है। निश्चित रूप से मानक के कुछ निर्णय संदिग्ध, या सीधे गलत हो सकते हैं - लेकिन इन मुद्दों और गलतियों को भी कुछ उत्पत्ति से उत्पन्न होता है। –
तो शायद आपका प्रश्न होना चाहिए "घोषणा का आदेश प्रारंभ करने का आदेश क्यों है?" चेतावनी के बारे में पूछने के बजाय। – dyp
_ "क्या कोई विशिष्ट कारण है कि इस तरह की चेतावनी जारी की जाती है?" _ -एक कारण आपकी मदद करना है। –