"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > ## क्या आप C++ बिल्ट-इन ऑपरेटर्स के लिए फ़ंक्शन पॉइंटर्स प्राप्त कर सकते हैं?

## क्या आप C++ बिल्ट-इन ऑपरेटर्स के लिए फ़ंक्शन पॉइंटर्स प्राप्त कर सकते हैं?

2024-11-07 को प्रकाशित
ब्राउज़ करें:737

## Can You Get Function Pointers to C   Built-in Operators?

क्या अंतर्निर्मित मानक ऑपरेटर का फ़ंक्शन पॉइंटर प्राप्त करना संभव है?

चुनौती

अंतर्निहित संदर्भ के लिए फ़ंक्शन पॉइंटर्स का उपयोग करना- टेम्प्लेट क्लास में "ग्रेटर दैन" ऑपरेटर (">") जैसे ऑपरेटरों में, सही प्रकार के ओवरलोड को निर्दिष्ट करना आवश्यक है। हालाँकि, यह चुनौतीपूर्ण हो सकता है।

बिल्ट-इन ऑपरेटर्स फ़ंक्शन पॉइंटर्स क्यों नहीं हो सकते

सी बिल्ट-इन ऑपरेटर्स, जैसे कि अंकगणित और तार्किक ऑपरेटर, वास्तविक ऑपरेटर फ़ंक्शन नहीं हैं। इसके बजाय, उन्हें कंपाइलर द्वारा सीधे असेंबली निर्देशों में अनुवादित किया जाता है। इसलिए, उनके लिए फ़ंक्शन पॉइंटर्स प्राप्त करना संभव नहीं है। लेकिन वास्तविक कार्य नहीं हैं। वे टेम्पलेटेड ऑब्जेक्ट हैं जो अपने ऑपरेटर() फ़ंक्शन में अनुरूप ऑपरेटर को क्षय करते हैं।

उदाहरण के लिए, std::greater फ़ंक्शन ऑब्जेक्ट ग्रेटर-दैन ऑपरेटर (">") का प्रतिनिधित्व करता है। इसे टेम्प्लेट क्लास में फ़ंक्शन पॉइंटर तर्क के रूप में उपयोग किया जा सकता है। कक्षा MyAction { जनता: MyAction(ParamsType& arg0,paramsType&arg1, FnCompareType& fnCpmpare) : arg0_(arg0), arg1_(arg1), fnCompare_(fnCompare_) {} बूल ऑपरेटर()() { यदि((fnCompare_)(arg0_,arg1_)) { // इसे करें } अन्य { // एस.टी.एच. करो अन्य } } निजी: पैराम्सटाइप&arg0_; पैराम्सटाइप&arg1_; FnCompareType& fnCompare_; }

void doConditional(int पैरामीटर1, इंट पैरामीटर2) { MyAction> एक्शन(param1, peram2); अगर(कार्रवाई()) { // इसे करें } अन्य { // वो करें } }

स्टैंडर्ड क्लास टाइप ऑपरेटर्स
template
class MyAction
{
public:
    MyAction(ParamsType& arg0, ParamsType& arg1, FnCompareType& fnCpmpare) 
    : arg0_(arg0), arg1_(arg1), fnCompare_(fnCompare_) {}

    bool operator()()
    {
        if((fnCompare_)(arg0_,arg1_))
        {
            // Do this
        }
        else
        {
            // Do s.th. else
        }
    }

private:
    ParamsType& arg0_;
    ParamsType& arg1_;
    FnCompareType& fnCompare_;
}
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3