2012-05-16 20 views
8

क्या सी में ऑपरेटर ओवरलोड (जैसे तुलना के ऑपरेटरों) को अधिभार करना संभव है?क्या सी में ऑपरेटरों को अधिभारित करना संभव है?

यदि हां, तो आप इसे कैसे करते हो? मैं एक त्वरित खोज किया था, लेकिन सब मैंने पाया सी ++ के लिए था, और क्या मैं चाहता हूँ सी के लिए

किसी को भी किसी भी विचार किया है?

Edit1: विचार है: मैं एक struct है, और मुझे एक तुलना (struct के एक सदस्य के आधार पर) की ज़रूरत है। और इसके लिए मैं अपने नए "डेटा प्रकार" की तुलना में ऑपरेटरों को जोड़ना चाहता हूं।

EDIT2: मैं पूरी तरह से पता है कि मैं ऑपरेटर ओवरलोडिंग के उपयोग के बिना कर सकते हैं, लेकिन अगर आप अधिभार ऐसा कर सकते हैं सोच रहा था।

उत्तर: अधिभार की अवधारणा ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के साथ जुड़ा हुआ है। चूंकि सी वस्तु उन्मुख नहीं है और इसलिए अधिभार की अवधारणा नहीं हो सकती है। (:।।

+1

मैं इसे सी में करना चाहता हूं: स्ट्रक्चर ए; _Bool ए_कंपारे (कॉन्स स्ट्रक्चर * ए, कॉन्स स्ट्रक्चर * ए); – xis

+0

मुझे पता है। यदि यह संभव था तो मैं ऑपरेटर का उपयोग करना चाहता हूं। – Richard

+0

यदि आप ऑपरेटर ओवरलोडिंग चाहते हैं तो आपको सी ++ –

उत्तर

18

नहीं, यह संभव नहीं है सी ऑपरेटर ओवरलोडिंग का समर्थन नहीं करता

+0

इस तरह से विचार करते हुए एक ऑपरेटर एक विशिष्ट प्रकार का कार्य नहीं है? – Richard

+2

सी में अधिभार कार्यों से आपका क्या मतलब है? सी फ़ंक्शन ओवरलोडिंग का समर्थन नहीं करता है। – xis

+1

@ xis19 नहीं, यह मेरी गलती नहीं है। रिचर्ड: सी ++ में, ऑपरेटर फ़ंक्शंस की तरह बहुत अधिक होते हैं, और ओवरलोडेड ऑपरेटरों को परिभाषित करना ठीक उसी तरह किया जाता है जैसे आप फ़ंक्शन को परिभाषित करते हैं। – meagar

5

अधिभार से हैं, तो आप उपयोगकर्ता परिभाषित ऑपरेटर भार के मतलब है, तो जवाब नहीं है हालांकि, इस तरह के रूप में पूर्वनिर्धारित ऑपरेटरों हैं। *, + आदि अतिभारित रहे हैं (यदि आप इसके बारे में सोचते) अंकगणित प्रकार के लिए। * खास है क्योंकि यह भी डे-संदर्भित संकेत के लिए एक अधिभार नहीं है।

+0

एकाधिक * और dereference * अलग हैं। मुझे लगता है कि वे अधिभार नहीं हैं। – xis

+3

'*' वास्तव में वह सब विशेष नहीं है। एक ही नाम के साथ दो अलग-अलग ऑपरेटर, एक बाइनरी, अन्य यूनरी हैं। वही होता है, उदाहरण के लिए, '& '। दोनों मामलों में, यूनरी और बाइनरी ऑपरेटर असंबद्ध हैं। –

+0

हां वे अलग हैं। यही कारण है कि मैंने कहा कि '*' विशेष है और अधिभारित नहीं है। – dirkgently

3

सी ऑपरेटरों या कार्यों का अधिक भार का समर्थन नहीं करता। <, <=,को फिर से परिभाषित करने का कोई तरीका नहीं है, >=, ==, या != struct प्रकार सीधे तुलना करने के लिए।

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