मैं हाल ही में मकसद से उत्साहित हो गया हूं और उन जगहों पर उनका उपयोग कर रहा हूं। तब स्थिति उत्पन्न हुई जहां मुझे दो अलग-अलग परिचालन करने के लिए अपने मज़ेदार की आवश्यकता थी और मैंने अपने मज़ेदार को एक और तरीका जोड़ने के बारे में सोचा ((ऑपरेटर ओवरलोडिंग नहीं)। चाहे यह बुरी आदत है या नहीं, मुझे यकीन नहीं है (शायद आप मुझे बता सकते हैं), लेकिन मुझे यह सोचने लगा कि मैं पहले स्थान पर क्यों नहीं हूं बल्कि न केवल वस्तुओं का उपयोग कर रहा हूं। तो मेरा सवाल है:नामित विधियों वाले ऑब्जेक्ट्स के लिए सी ++ फ़ैक्टर बेहतर क्यों हो सकते हैं?
क्या() ऑपरेटर को अधिभारित करने के बारे में कुछ खास है या क्या यह सामान्य नामित विधियों का उपयोग करने से बहुत ही सरल रूप से आकर्षक है?
अद्यतन:
सबसे पहले, मैं जानता हूँ कि क्यों functors संकेत के रूप में कार्य करने के लिए अन्य प्रश्न में विस्तार से बताया बेहतर हो सकता है। मैं जानना चाहता हूं कि क्यों वे नामित विधियों के साथ वस्तुओं के लिए बेहतर हो सकते हैं।
दूसरा, उदाहरण के लिए, जब मैं अपने मज़ेदार की एक अन्य संभवतः नामित विधि का उपयोग करना चाहता था: असल में मेरे पास दो कार्य हैं, जो एक ग्राफ विभाजन के मॉड्यूलरिटी नामक कुछ की गणना करता है - compute_modularity()
, और दूसरा जो लाभ की गणना करता है compute_modularity_gain()
विभाजन के कुछ परिवर्तन के बाद मॉड्यूलरिटी में। मैंने सोचा कि मैं एक ही फंक्शन के हिस्से के रूप में इन फ़ंक्शंस को एक ऑप्टिमाइज़ेशन एल्गोरिदम में पास कर सकता हूं, नामित फ़ंक्शन के रूप में लाभ के साथ। कारण मैं एल्गोरिदम में केवल दो म्यूटर्स को पास नहीं करता हूं, यह है कि मैं इसे लागू करना चाहता हूं कि compute_modularity_gain()
केवल compute_modularity()
के साथ संयोजन में उपयोग किया जाता है और अन्य फ़ैक्टर नहीं। compute_stability()
(जो केवल compute_stability_gain()
साथ किया जाना चाहिए। दूसरे शब्दों में, लाभ समारोह कसकर अपने भाई समारोह के साथ मिलकर किया जाना चाहिए। अगर वहाँ एक और तरीका है मैं इस बाधा लागू कर सकते हैं तो कृपया मुझे पता है।
उस परिदृश्य का वर्णन करें जिससे आप एक और विधि जोड़ना चाहते हैं। –
ऐसा लगता है कि यह शामिल किया गया है: [सी ++ फ़ैक्टर - और उनके उपयोग।] (Http://stackoverflow.com/q/356950/478288) – chrisaycock
@chrisaycock: आपको केवल * सटीक * डुप्लिकेट को बंद करना चाहिए। यह प्रश्न समान है, लेकिन गुणात्मक रूप से अलग पहलू है: सामान्य नामित विधियों का उपयोग करके मज़ेदारों को क्यों लागू नहीं किया जा सकता है और वे केवल एक विधि को क्यों लागू कर सकते हैं? –