कुछ करने के बाद खोजने के लिए और पुनर्रचना मैं इस मणि के साथ समाप्त हो गया की जगह:"कॉन्स्ट क्लास" का क्या अर्थ है?
const class A
{
};
क्या "स्थिरांक वर्ग" क्या मतलब है? ऐसा लगता है कि ठीक है।
कुछ करने के बाद खोजने के लिए और पुनर्रचना मैं इस मणि के साथ समाप्त हो गया की जगह:"कॉन्स्ट क्लास" का क्या अर्थ है?
const class A
{
};
क्या "स्थिरांक वर्ग" क्या मतलब है? ऐसा लगता है कि ठीक है।
"कॉन्स्ट क्लास" का क्या अर्थ है? ऐसा लगता है कि ठीक है।
मेरे लिए यह नहीं है। मुझे लगता है कि आपका कंपाइलर सिर्फ विनम्र और अनदेखा कर रहा है।
संपादित करें: हाँ, वीसी ++ चुपचाप कॉन्स्ट को अनदेखा करता है, जीसीसी शिकायत करता है।
यदि आप था यह:
तो यह स्पष्ट रूप से मतलब यह होगा कि 'एक' स्थिरांक है। अन्यथा, मुझे लगता है कि यह अमान्य सी ++ की संभावना है।
सी ++ की अच्छी पुरानी भूल गई विशेषताएं! मुझे लगता है कि सी में बहुत पहले आप इस तरह की चीजें कर रहे हैं। –
const
कि उदाहरण में कोई मतलब नहीं है, और अपने संकलक आप एक त्रुटि देना चाहिए, लेकिन अगर आप इसका इस्तेमाल बंद करने }
और ;
के बीच उस वर्ग के चर घोषित करने के लिए है, तो const
के रूप में, उदाहरण के लिए ऐसे मामलों को परिभाषित करता है कि:
const class A
{
public:
int x, y;
} anInstance = {3, 4};
// The above is equivalent to:
const A anInstance = {3, 4};
मुझे यह त्रुटि बनाने के लिए कोई औचित्य नहीं मिल रहा है। कंपाइलर्स इच्छा पर चेतावनियां उत्सर्जित कर सकते हैं, लेकिन केवल मानक निर्धारित करता है कि त्रुटि के रूप में क्या मायने रखता है। – MSalters
क्योंकि आप कुछ ऐसी कॉन्स के रूप में घोषित कर रहे हैं जो नहीं है। यह ऐसा कुछ है जो आप कभी नहीं करना चाहते हैं, और इसलिए एक त्रुटि होनी चाहिए। मानक निर्धारित करना चाहिए कि क्या सही है; हर गलत चीज को परिभाषित करना बहुत अधिक काम होगा। – Bernard
मुझे लगता है कि मानक में इस्तेमाल किया जाने वाला शब्द "विकृत" है। मानक यह नहीं कहता कि क्या अनुमति नहीं है, केवल वही है। यह मान्य सी ++ वाक्यविन्यास नहीं है, इसलिए इसकी अनुमति नहीं है। – KeithB
यह व्यर्थ है जब तक आप इस उदाहरण के रूप में बाद में वर्ग का एक उदाहरण का ऐलान करते हैं:
const // It is a const object...
class nullptr_t
{
public:
template<class T>
operator T*() const // convertible to any type of null non-member pointer...
{ return 0; }
template<class C, class T>
operator T C::*() const // or any type of null member pointer...
{ return 0; }
private:
void operator&() const; // Can't take address of nullptr
} nullptr = {};
एक अंतरिमयदि आप सी ++ 0x की प्रतीक्षा कर रहे हैं तोकार्यान्वयन।
मैं कहने जा रहा हूं कि यह एक बढ़त के मामले की तरह दिखता है कि वीसी ++ गलत हो रहा है –
ऐसा लगता है; 'कॉन्स' मुझे जो भी मिल सकता है उसे प्रभावित नहीं करता है। –
वीसी ++ वास्तव में बहुत बीमार गठित कोड (मैं अब 2013 का उपयोग कर रहा हूँ) digest। ऐसा लगता है कि उन्होंने सिर्फ खुश पथों के लिए इसका परीक्षण किया। – ubik