2009-03-28 10 views
15

निम्नलिखित कोड को देखते हुए:कन्स्ट्रक्टर परिभाषा में शून्य होने का क्या अर्थ है?

#pragma once 

class B 
{ 
public: 

    B(void) 
    { 
    } 

    ~B(void) 
    { 
    } 
}; 

मुझे पता है कि मैं यह भी लिख सकता हूं:

#pragma once 

class B 
{ 
public: 

    B() 
    { 
    } 

    ~B() 
    { 
    } 
}; 

पहले उदाहरण में void होने का उद्देश्य क्या है? क्या यह कुछ प्रकार का अभ्यास है जो कहता है कि कन्स्ट्रक्टर शून्य पैरामीटर लेता है?

+0

मुझे यह चर्चा तब बहुत दिलचस्प लग गई: http://stackoverflow.com/questions/540748/void-void-c-and-c –

उत्तर

34

दोनों समान हैं, कम से कम C++ में। सी में, कोष्ठक की एक खाली जोड़ी प्रदान करना आम तौर पर एक अनिर्दिष्ट पैरामीटर सूची (खाली पैरामीटर सूची के विपरीत) का मतलब है। सी ++ में यह समस्या नहीं है।

एक सही उत्तर कितनी बार डाउनवॉट किया जा सकता है? फिर भी एक और एसओ बग?

+2

कम से कम आप सकारात्मक में हैं। मैंने हाल ही में एक स्वीकार्य (सही) उत्तर दिया था जो नकारात्मक वोटों के साथ समाप्त हुआ था। परेशान। – JaredPar

+0

@ जेरेडपार: और मैं इसके बारे में मजाक कर रहा था, कुछ दिनों पहले एक सहयोगी के साथ भी होगा।मेरे पास पिछले 3 दिनों में हटाए गए 3 स्वीकृत उत्तरों हैं - चौंकाने वाला? – dirkgently

+0

@dirkgently, यह विषम है। मुझे लगता है कि मैं औसतन 1 स्वीकार्य उत्तर हर 2-3 हफ्तों में हटा देता हूं। 3 दिनों में 3 निश्चित रूप से उच्च है। – JaredPar

0

afaik अगर आप कन्स्ट्रक्टर या किसी भी फ़ंक्शन को तर्क के रूप में रद्द करते हैं तो इसका अर्थ यह है कि फ़ंक्शन किसी भी तर्क को नहीं लेता है, उदाहरण उदाहरण ए और बी बराबर हैं। लेकिन मुझे यकीन नहीं है कि उनमें से कोई भी फ़ंक्शन हस्ताक्षर को किसी भी तरह से बदलता है या इसे तेजी से चलाता है।

8

एक लंबे समय पहले आप सी में कुछ इस तरह से किया था (मेरे पूर्व आईएसओ सी जंग लगी है :)):

void foo(a, b) 
    int a, 
    int b 
{ 
} 

जबकि सी ++ बनाया जा रहा था नाम mangling आवश्यक तर्क के प्रकार है, तो सी के लिए ++ यह में बदल गया था:

void foo(int a, int b) 
{ 
} 

और इस बदलाव सी

के लिए आगे लाया गया था इस बिंदु पर, मैं ब्रेक से बचने के लिए विश्वास करते हैं मौजूदा सी कोड ing इस:

void foo() 

और इस:

void foo(void) 

दो बहुत अलग बातें मतलब, () मतलब है तर्क नंबर के लिए जांच नहीं करते या टाइप, और (void) मतलब है कोई तर्क लेता है। C++ () का अर्थ कुछ भी जांचने के लिए काम नहीं करेगा, इसलिए () और (void) का मतलब सी ++ में एक ही बात है।

तो, सी ++ () और (void) हमेशा एक ही चीज़ थे।

कम से कम है कि मैं इसे कैसे याद है ... :-)

0

मैं बस को जोड़ने के लिए है कि जब आप समारोह जैसे पैरामीटर के बाद शून्य() का उपयोग करना चाहता था: इंगित करने के लिए समारोह है कि शून्य यह प्रयोग किया जाता है एक मूल्य वापस नहीं।

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