2012-12-13 29 views
5

मुझे खेद है कि यह प्रश्न रिपोर्ट हो गया है लेकिन मुझे आसानी से ऑनलाइन समाधान नहीं मिल रहा है। अगर मैं ऑपरेटर ओवरराइड करता हूं()() यह किस व्यवहार को परिभाषित करता है?ऑपरेटर()() परिभाषित करता है क्या?

+4

यह फ़ंक्शन कॉल ऑपरेटर है। आपको यह उपयोगी मिल सकता है: http://stackoverflow.com/questions/4421706/operator-overloading – chris

उत्तर

8

operator() फ़ंक्शन कॉल ऑपरेटर है, यानी, आप फ़ंक्शन ऑब्जेक्ट के रूप में इसी प्रकार के ऑब्जेक्ट का उपयोग कर सकते हैं। कोष्ठक के दूसरे सेट में तर्कों की सूची (सामान्य की तरह) होती है जो खाली होती है। उदाहरण के लिए:

struct foo { 
    int operator()() { return 17; }; 
}; 

int main() { 
    foo f; 
    return f(); // use object like a function 
} 

उपर्युक्त उदाहरण दिखाता है कि ऑपरेटर को कैसे घोषित किया जाता है और कहा जाता है। एक यथार्थवादी उपयोग शायद ऑपरेटर में सदस्य चर का उपयोग करेगा। फंक्शन ऑब्जेक्ट मानक सी ++ लाइब्रेरी में अनुकूलन बिंदुओं के रूप में कई स्थानों पर उपयोग किया जाता है। फ़ंक्शन पॉइंटर की बजाय ऑब्जेक्ट का उपयोग करने का लाभ यह है कि फ़ंक्शन ऑब्जेक्ट में डेटा संलग्न हो सकता है।

+0

यह देखने में थोड़ा मुश्किल है कि यह आपके उदाहरण में उपयोगी कैसे हो सकता है। – dreamlax

+0

@dreamlax: मैंने एक संक्षिप्त विवरण जोड़ा लेकिन आपके लिए कौन से फ़ंक्शन ऑब्जेक्ट्स का उपयोग किया जाता है, इसके स्पष्टीकरण के लिए आप मौजूदा उत्तरों की तलाश करेंगे। –

+0

+1: अच्छी जानकारी जोड़ा गया। – dreamlax