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

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

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

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

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

परिचय

फ़ंक्शन पॉइंटर विशिष्ट को संदर्भित करने का एक तरीका प्रदान करते हैं ऑपरेटर कार्य. हालाँकि, अंतर्निहित मानक ऑपरेटरों के लिए, यह दृष्टिकोण सीधा नहीं हो सकता है। यह आलेख इस सीमा के पीछे के कारणों पर प्रकाश डालता है और समान कार्यक्षमता प्राप्त करने के लिए वैकल्पिक समाधानों की खोज करता है।

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

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

उदाहरण

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

class MyAction { बूल ऑपरेटर()() { यदि (fnCompare_(arg0_, arg1_)) { // इसे करें } अन्य { // एस.टी.एच. करो अन्य } } };

यहां, तुलना करने के लिए fnCompare_ std::equal_to जैसा एक फ़ंक्शन ऑब्जेक्ट हो सकता है।
class MyAction {
  bool operator()() {
    if (fnCompare_(arg0_, arg1_)) {
      // do this
    } else {
      // do s.th. else
    }
  }
};

फ़ंक्शन ऑब्जेक्ट के अलावा , मानक लाइब्रेरी ऑपरेटरों का उपयोग फ़ंक्शन पॉइंटर्स के रूप में भी किया जा सकता है। हालाँकि, टेम्पलेट के संबंधित उदाहरण को संदर्भित किया जाना चाहिए। उदाहरण के लिए:

std::basic_string a("test"), b("test2"); std::cout >(a, b, &std::operator );

निष्कर्ष
std::basic_string a("test"), b("test2");
std::cout >(a, b, &std::operator );
नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3