2011-12-21 18 views
18

संभव डुप्लिकेट:
What is the difference between a method and a functionसी ++ में, एक विधि है और एक समारोह के बीच क्या अंतर है

मैं अपने शब्दावली सही पाने के लिए कोशिश कर रहा हूँ।

विशेष रूप से सी ++ के संबंध में विधि और फ़ंक्शन के बीच क्या अंतर है।

क्या यह तरीका कुछ भी नहीं देता है और केवल इसकी कक्षा पर संचालन को पूर्ववत करता है; जबकि एक समारोह में वापसी मूल्य है?

+3

@Ash Burlaczenko मुझे नहीं लगता कि यह उस प्रश्न का एक डुप्लिकेट है, क्योंकि यह प्रश्न सी ++ के लिए विशिष्ट नहीं है। –

+0

मैं सहमत हूं, यह एक डुप्लिकेट नहीं है। वास्तव में मुझे यह भी लगता है कि यह एक बेहतर सवाल है, क्योंकि दायरा अधिक अच्छी तरह परिभाषित है। – joaerl

उत्तर

35

जहां तक ​​सी ++ मानक का संबंध है, वहां "विधि" जैसी कोई चीज़ नहीं है। कक्षा के सदस्य कार्यों को संदर्भित करने के लिए यह शब्दावली अन्य ओओ भाषाओं (जैसे जावा) में उपयोग की जाती है।

सामान्य उपयोग में, आप पाएंगे कि अधिकतर लोग "विधि" और "फ़ंक्शन" का उपयोग कम से कम एक दूसरे के रूप में करेंगे, हालांकि कुछ लोग सदस्य कार्यों में "विधि" के उपयोग को प्रतिबंधित करेंगे ("मुक्त फ़ंक्शंस" के विपरीत जो एक वर्ग के सदस्य नहीं हैं)।

+2

ऐसा लगता है कि ओपी सी ++ मानक से संबंधित नहीं है। 98 एक नहीं, 03 एक नहीं * gasp * यहां तक ​​कि 11 एक। वह केवल सही शब्दावली में रुचि रखते हैं। –

+4

और सही शब्दावली "विधि" नहीं है, यह सदस्य कार्य है। –

+9

@ कैप्टन जीराफ: मैं आपकी बात समझता हूं। लेकिन मानक में क्या है इसके अलावा कोई "सही शब्दावली" नहीं है। कुछ और सिर्फ विज्ञापन है। –

1

एक विधि एक वर्ग का सदस्य कार्य है, लेकिन सी ++ में उन्हें आमतौर पर विधियों की तुलना में सदस्य कार्य कहा जाता है (कुछ प्रोग्रामर जावा जैसी अन्य भाषाओं से आते हैं जैसे कि उन्हें कॉल करें)।

एक फ़ंक्शन आमतौर पर एक फ्री-फ़ंक्शन का मतलब है, जो कि कक्षा का सदस्य नहीं है।

तो जब कोई सदस्य फ़ंक्शन एक फ़ंक्शन होता है, तो फ़ंक्शन आवश्यक रूप से सदस्य फ़ंक्शन नहीं होता है।

उदाहरण:

void blah() { } // function 

class A { 
    void blah() { } // member function (what would be a "method" in other languages) 
}; 

blah(); // free functions (non-member functions) can be called like this 

A ainst; 
ainst.blah(); // member functions require an instance to invoke them on 
9

क्षमा करें, लेकिन यह अपने पालतू peeves में से एक है। विधि सिर्फ एक सामान्य ओओ-प्रकार शब्द है। विधि C++ में मौजूद नहीं है। यदि आप सी ++ मानक खोलते हैं, तो आपको "विधियों" का कोई उल्लेख नहीं मिलेगा। सी ++ में विभिन्न स्वादों का कार्य होता है।

+4

और उचित शब्दावली के लिए हम मानक को देखते हैं। बिल्ली, स्ट्रॉस्ट्रप की किताबों में भी देखो। वह हमेशा उन्हें सदस्य कार्य कहते हैं, तरीकों से नहीं। –

1

यहां तक ​​कि एक विधि में वापसी मूल्य हो सकता है।

एक विधि कक्षा का एक कार्य है। उदाहरण के लिए कक्षा "कार" में एक विधि "तेज़" होती है।

+0

सी ++ इस भेद को नहीं बनाता है। –

0

शब्द "विधि" का उपयोग C++ में नहीं किया जाता है, बल्कि सदस्य फ़ंक्शन

यदि आप प्रक्रिया और एक फ़ंक्शन के बीच अंतर के बारे में सोच रहे हैं तो सी ++ में अंतर कोई नहीं है। पास्कल उस भेद को बनाने के लिए आखिरी भाषा थी। (एडीए का निर्माण बाद में किया गया था और प्रक्रिया शब्द, ब्रायन नील का उपयोग किया गया था।)

किसी भी कार्य, सदस्य या नहीं, शून्य के रूप में घोषित, पुरानी शब्दावली में एक प्रक्रिया होगी।

एक सदस्य समारोह एक जटिल जानवर है, एक समारोह एक साधारण कार्य है।

एक सदस्य समारोह

  • एक वर्ग के एक सदस्य
  • निजी हो सकता है
  • संरक्षित किया जा सकता
  • निजी
  • आभासी हो सकता है
  • कर सकते हैं हो सकता है शुद्ध वर्चुअल
+3

सी ++ इस भेद को नहीं बनाता है। –

+0

@ ओली क्या भेद? –

+0

"विधि" और "फ़ंक्शन" के बीच। –

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