2012-08-04 15 views
6

मैं निम्नलिखित स्रोतएक int * NULL का डिफ़ॉल्ट मान है?

#include <iostream> 
using namespace std; 

template <class T> 
class AAA 
{ 
public: 
    void f() { cout << T() << " "; } 
}; 

int main (void) 
{ 
    AAA<int*> a; 
    AAA<int> b; 

    a.f(); /// in this case, T() == NULL?? 
    b.f(); 

    return 0; 
} 

लिखा है और सांत्वना प्रिंट है 00000000 0.

अगर टी, int * है टी() == NULL (विजुअल स्टूडियो 2010 में)? और क्या यह हमेशा सच है?

+1

हाँ। हमेशा। http://stackoverflow.com/a/937257/707111 – Ryan

+0

संभावित डुप्लिकेट [सी ++ पॉइंटर के लिए डिफ़ॉल्ट कन्स्ट्रक्टर क्या है?] (http://stackoverflow.com/questions/936999/what-is-the-default-constructor -for-c-pointer) – Troubadour

उत्तर

8

हां। एक मूल्य-प्रारंभिक सूचक हमेशा शून्य होता है।

0

हां। यह शून्य सूचक है। और यह कारण है कि प्रिंट कर रहा है:

00000000 

क्योंकि यह 4-बाइट उपयोग कर रहा है अशक्त-पते का प्रतिनिधित्व करने के (हेक्साडेसिमल प्रारूप में)।

64-बिट मशीन पर, यह मई प्रिंट इस बजाय (हेक्साडेसिमल प्रारूप):

0000000000000000 
9

यह मूल्य प्रारंभ, आप की गारंटी है 0 कहा जाता है।

इसके अलावा, आप प्रदर्शित करने के लिए इस तरह के एक जटिल उदाहरण की जरूरत नहीं है:

typedef int* T; 
int main() 
{ 
    T x = T(); 
    std::cout << x; 
} 
+2

ईश्वर, 55k प्रतिष्ठा और आप अभी भी एक मिनट से भी कम समय में उन मूर्ख सवाल का जवाब देते हैं। आप अपने ज्ञान को अधिक जटिल प्रश्न के लिए क्यों नहीं रखते हैं, जिससे नवागंतुकों को कुछ प्रतिष्ठा बनाने का मौका मिलता है? – akappa

+1

@akappa मैंने 100k के लिए एक लक्ष्य निर्धारित किया है ... –

+0

मैं देखता हूं। मैंने आपके जवाब को ऊपर उठाया, अपने मील का पत्थर तक पहुंचने में सहायता के लिए: पी – akappa

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