2010-04-22 9 views
10

The Design and Evolution of C++ के पृष्ठ 57 पर, डॉ स्ट्रास्ट्रप एक ऐसी सुविधा के बारे में बात करते हैं जो प्रारंभ में कक्षाओं के साथ सी का हिस्सा था, लेकिन यह आधुनिक सी ++ (मानक सी ++) का हिस्सा नहीं है। सुविधा call/return कहा जाता है। यह एक उदाहरण है:क्लासिक सी ++ (कक्षाओं के साथ सी) की कॉल/वापसी सुविधा, आधुनिक भाषाओं में यह क्या है?

class myclass 
{ 
    call() { /* do something before each call to a function. */ } 
    return() { /* do something else after each call to a function. */ } 
    ... 
}; 

मुझे यह सुविधा बहुत दिलचस्प लगता है। क्या किसी आधुनिक भाषा में यह विशेष सुविधा है?

+4

एओपी के समान दिखता है: http://en.wikipedia.org/wiki/Aspect-oriented_programming –

+0

@gf यह दिलचस्प है, मुझे लगता है कि मैं सी ++ के लिए कुछ एओपी ढांचे को देखने जा रहा हूं, क्योंकि मैंने कभी नहीं किया है इससे पहले :) – AraK

+0

यह बहुत पहलू-उन्मुख दिखता है। मैं उत्सुक हूं कि इसे क्यों माना जाता था और फिर गिरा दिया गया था। इसके अलावा ... मेरे पास वह पुस्तक नहीं है इसलिए मुझे यह पूछना है: क्या यह सुविधा कक्षा के * किसी * समारोह से पहले या * विशिष्ट * फ़ंक्शन से पहले लागू करने के लिए डिज़ाइन की गई थी? क्या अलग-अलग कार्यों के लिए अलग-अलग 'कॉल() 'और' वापसी() 's को परिभाषित करना संभव होगा? – FrustratedWithFormsDesigner

उत्तर

7

आधुनिक सी ++ समकक्ष एक संत्री वस्तु होगी: इसे call() को लागू करने वाले कन्स्ट्रक्टर के साथ, और वापसी (या असामान्य निकास) पर, इसके विनाशक return() लागू करता है।

+0

सिर्फ इनपुट और आउटपुट स्ट्रीम के लिए संगत ऑब्जेक्ट्स नहीं हैं? –

+0

+1 धन्यवाद, मुझे इस कक्षा के बारे में सी ++ में भी पता नहीं था। उम्मीद है कि मैं अपना खुद का कार्यान्वयन करने का प्रयास करें! – AraK

+0

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

2

पहलू ओरिएंटेड प्रोग्रामिंग में यह है। http://en.wikipedia.org/wiki/Aspect-oriented_programming

पहलू ओरिएंटेड प्रोग्रामिंग (जिसे एओपी भी कहा जाता है) में कोड के बाद और उसके आसपास पहले इंटरसेप्टर बनाने की क्षमता है।

0

डी 2 प्रोग्रामिंग भाषा में ScopeGuards के साथ यह और अधिक है। यह डिज़ाइन किया गया है ताकि आप एकाधिक लोगों का उपयोग कर सकें, वे एक फिलो स्टैक की तरह काम करते हैं।

संबंधित मुद्दे