में ओवरलोडिंग ** पायथन में, हमारे पास एक मनमाने ढंग से इंट/फ्लोट करने के लिए एक अच्छा सरल वाक्यविन्यास है। अर्थात्, के लिए आप गैर अजगर प्रोग्रामर, हम निम्नलिखित बयान हो सकता है:सी ++
y = 2 ** 3
print y
इस कंसोल के लिए 8 प्रिंट होगा, और अच्छा वाक्यविन्यास है के रूप में वहाँ है "सत्ता" ऑपरेटर में एक का निर्माण किया। क्या सी ++ में एक ऑपरेटर के रूप में "**" अधिभार करना संभव है? विशेष रूप से, मैं कुछ इस तरह पूरा करने के लिए करना चाहते हैं:
int a = 2;
int b = 3;
cout << (a**b) << endl;
या, यदि यह संभव है, कुछ इस तरह नहीं है:
MyInt a = new MyInt(2); // Wrapper class around ints to play nicely with **
MyInt b = new MyInt(3);
cout << (a**b) << end; // Assume ostream overridden for MyInt
ये भी कंसोल के लिए 8 प्रिंट चाहिए। मैं समझता हूं कि "^" ऑपरेटर को एक ही काम करने के लिए ओवरराइड करना अधिक आसान होगा, लेकिन मुझे यह देखने में दिलचस्पी है कि मैं "**" अधिभारित कर सकता हूं या नहीं। ऑपरेटर "*" (MyInt क्लास केस के लिए, यदि यह सदस्य फ़ंक्शन था) को देखना होगा कि तर्क एक और "*" था, क्योंकि मुझे "**" निर्दिष्ट करने के तरीके के बारे में पता नहीं है एक ऑपरेटर? क्या ऑपरेटर को तर्क के रूप में पास करना भी संभव है?
यदि संभव हो तो अतिरिक्त/बोनस शर्त (जैसे कि मैंने पहले ही पर्याप्त नहीं कहा है): कोई मैक्रोज़ !!!
यह ऑपरेटर ओवरलोडिंग कहा जाता है, क्योंकि आप ऑपरेटरों को अधिभारित करते हैं। ** एक ऑपरेटर नहीं है। – DeiDei
शक्ति के अर्थ में ऑपरेटर अधिभारित न करें, इसकी ==, + या उससे कम प्राथमिकता है - इसलिए इससे बहुत सारी आश्चर्य हो जाएगी। –
@ ÖöTiib महान बिंदु! – mwm314