दिस (THIS कंप्यूटर प्रोग्रामिंग)

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

वस्तु-उन्मुख प्रोग्रामिंग
अनेक ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग |ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषाओं में,   (यह भी कहा जाता है   या  ) वेरिएबल है जिसका उपयोग इंस्टेंस विधियों में उस ऑब्जेक्ट को संदर्भित करने के लिए किया जाता है जिस पर वह काम कर रहे हैं। पहली OO भाषा,  शुरुआत, का उपयोग किया गया   स्थानीय वस्तु को स्पष्ट रूप से संदर्भित करने के लिए।  C++ और इससे शैली में व्युत्पन्न भाषाएं (जैसे जावा (प्रोग्रामिंग भाषा), सी शार्प (प्रोग्रामिंग भाषा)|सी#, डी (प्रोग्रामिंग भाषा), और पीएचपी) भी सामान्यतः उपयोग की जाती हैं. स्मॉलटॉक और अन्य, जैसे ऑब्जेक्ट पास्कल, पर्ल, पायथन (प्रोग्रामिंग भाषा), रूबी (प्रोग्रामिंग भाषा), रस्ट (प्रोग्रामिंग भाषा), उद्देश्य सी, डेटाफ्लेक्स और स्विफ्ट (प्रोग्रामिंग भाषा), उपयोग करें. माइक्रोसॉफ्ट के मूल दृश्य का उपयोग करता है.

यह अवधारणा सभी भाषाओं में समान है:  सामान्यतः अपरिवर्तनीय संदर्भ (कंप्यूटर विज्ञान) या  सूचक (कंप्यूटर प्रोग्रामिंग)  है जो वर्तमान वस्तु को संदर्भित करता है; वर्तमान ऑब्जेक्ट अधिकांशतः वह कोड होता है जो  संपत्ति (प्रोग्रामिंग),  विधि (कंप्यूटर प्रोग्रामिंग) , सब-रूटीन या फलन के लिए 'पैरेंट' या 'इनवॉकेंट' के रूप में कार्य करता है जिसमें सम्मिलित होता है   कीवर्ड. किसी वस्तु के ठीक से निर्माण या त्वरितीकरण के पश्चात्,  हमेशा वैध संदर्भ होता है. कुछ भाषाओं को स्पष्ट रूप से इसकी आवश्यकता होती है; अन्य लोग अपने वर्ग के प्रतीकों को दृश्यमान बनाने के लिए इसका अंतर्निहित रूप से उपयोग करने के लिए शाब्दिक दायरा  का उपयोग करते हैं। या वैकल्पिक रूप से, वर्तमान वस्तु द्वारा संदर्भित   स्वतंत्र कोड ऑब्जेक्ट हो सकता है जिसने कीवर्ड वाले फलन या विधि को कॉल किया हो. ऐसी बात होती है, उदाहरण के लिए, जब किसी वेब पेज में HTML टैग से जुड़ा जावास्क्रिप्ट ईवेंट हैंडलर कीवर्ड वाले फलन को कॉल करता है  दस्तावेज़ ऑब्जेक्ट के बाहर वैश्विक स्थान में संग्रहीत; उस संदर्भ में,   दस्तावेज़ ऑब्जेक्ट के भीतर पृष्ठ तत्व को संदर्भित करेगा, संलग्न विंडो ऑब्जेक्ट को नहीं। कुछ भाषाओं में, उदाहरण के लिए C++, Java और Raku  या   कीवर्ड (कंप्यूटर प्रोग्रामिंग) है, और वेरिएबल स्वचालित रूप से इंस्टेंस विधियों में उपस्तिथ होता है। दूसरों में, उदाहरण के लिए पायथन, रस्ट और पर्ल 5 में, इंस्टेंस विधि का पहला पैरामीटर ऐसा संदर्भ है। इसे स्पष्ट रूप से निर्दिष्ट करने की आवश्यकता है। पायथन और पर्ल में, पैरामीटर को आवश्यक रूप से नाम देने की आवश्यकता नहीं है   या  ; इसे किसी अन्य पैरामीटर की तरह प्रोग्रामर द्वारा स्वतंत्र रूप से नामित किया जा सकता है। चूँकि, अनौपचारिक परंपरा के अनुसार, पर्ल या पायथन में इंस्टेंस विधि के पहले पैरामीटर का नाम दिया जाता है. जंग के लिए स्वयं वस्तु को बुलाए जाने की आवश्यकता होती है  या , इस पर निर्भर करता है कि क्या आह्वान किया गया फलन आह्वानकर्ता को उधार लेता है, या उसे क्रमशः अंदर ले जाता है।

C++ या Java में स्टेटिक विधियाँ उदाहरणों से नहीं किंतु कक्षाओं से संबद्ध हैं, और इसलिए उनका उपयोग नहीं किया जा सकता है, क्योंकि कोई वस्तु नहीं है। अन्य भाषाओं में, जैसे रूबी, स्मॉलटॉक, ऑब्जेक्टिव-सी, या स्विफ्ट, विधि क्लास ऑब्जेक्ट से जुड़ी होती है जिसे इस प्रकार पारित किया जाता है  , और उन्हें क्लास विधियाँ कहा जाता है। क्लास विधियों के लिए, पायथन का उपयोग किया जाता है   क्लास ऑब्जेक्ट तक पहुंचने के लिए।

बारीकियाँ और कठिनाइयाँ
जब अनुमान लगाने के लिए लेक्सिकल स्कोपिंग का उपयोग किया जाता है, का उपयोग   कोड में, चूंकि यह अवैध नहीं है, यह रखरखाव प्रोग्रामर के लिए चेतावनी की घंटी बजा सकता है, चूंकि इसके अभी भी वैध उपयोग हैं   इस मामले में, जैसे कि ही नाम के स्थानीय चर द्वारा छिपे हुए उदाहरण चर का संदर्भ देना, या यदि विधि वर्तमान ऑब्जेक्ट का संदर्भ वापस करना चाहती है, अर्थात।  , अपने आप।

कुछ कंपाइलर्स (उदाहरण के लिए जीएनयू कंपाइलर संग्रह) में, C++ इंस्टेंस विधियों के पॉइंटर्स को स्पष्ट रूप से किसी अन्य प्रकार के पॉइंटर पर सीधे डाला जा सकता है  सूचक पैरामीटर.

खुला प्रत्यावर्तन
का प्रेषण शब्दार्थ, अर्थात् वह विधि चालू रहती है   गतिशील रूप से प्रेषित होते हैं, इसे ओपन रिकर्सन के रूप में जाना जाता है, और इसका कारणहै कि यह विधियां व्युत्पन्न कक्षाओं या ऑब्जेक्ट्स द्वारा ओवरराइडिंग की जा सकती हैं। इसके विपरीत, किसी फलन का प्रत्यक्ष नामित रिकर्सन या अज्ञात रिकर्सन प्रारंभिक बाइंडिंग के साथ बंद रिकर्सन का उपयोग करता है। उदाहरण के लिए, फैक्टोरियल के लिए निम्नलिखित पर्ल कोड में, टोकन   वर्तमान फलन का संदर्भ है: इसके विपरीत, C++ में (स्पष्ट का उपयोग करके  स्पष्टता के लिए, चूंकि आवश्यक नहीं)   ऑब्जेक्ट से ही जुड़ जाता है, किन्तु यदि क्लास विधि को आधार में वर्चुअल अर्थात बहुरूपी घोषित किया गया था, तब इसे डायनेमिक डिस्पैच (देर देर से बंधन) के माध्यम से हल किया जाता है जिससे कि व्युत्पन्न कक्षाएं इसे ओवरराइड कर सकें। यह उदाहरण कृत्रिम है, क्योंकि यह प्रत्यक्ष प्रत्यावर्तन है, इसलिए ओवरराइडिंग है  विधि इस फलन को ओवरराइड कर देगी; अधिक प्राकृतिक उदाहरण तब होते हैं जब व्युत्पन्न वर्ग में विधि बेस क्लास में या पारस्परिक पुनरावृत्ति के स्थितियोंमें उसी विधि को कॉल करती है।

कमजोर बेस क्लास समस्या के लिए ओपन रिकर्सन को दोषी ठहराया गया है, जिसमें सुझाव दिया गया है कि तरीकों को प्रयुक्त किया जाए  खुले रिकर्सन (गतिशील प्रेषण, देर से बाइंडिंग) के अतिरिक्त बंद रिकर्सन (स्थैतिक प्रेषण, प्रारंभिक बाइंडिंग) के लिए डिफ़ॉल्ट, विशेष रूप से अनुरोध किए जाने पर केवल खुले रिकर्सन का उपयोग करना; बाहरी कॉल (उपयोग नहीं कर रहे हैं  ) हमेशा की तरह गतिशील रूप से भेजा जाएगा।  जिस तरह से इसे जेडीके में व्यवहार में हल किया जाता है वह निश्चित प्रोग्रामर अनुशासन के माध्यम से होता है; इस अनुशासन को सी. रूबी और जी. टी. लीवेन्स द्वारा औपचारिक रूप दिया गया है; इसमें मूल रूप से निम्नलिखित नियम सम्मिलित हैं:
 * कोई कोड प्रयुक्त नहीं होता  तरीकों पर.
 * कोड जिसे आंतरिक रूप से पुन: उपयोग किया जा सकता है (उसी वर्ग के अन्य तरीकों से आह्वान करके) में समाहित किया गया है  या   प्रणाली; यदि इसे सीधे उपयोगकर्ताओं के सामने प्रदर्शित करने की आवश्यकता है, तब आवरण   विधि आंतरिक विधि को कॉल करती है।
 * शुद्ध कार्य विधियों के लिए पिछली अनुशंसा में ढील दी जा सकती है।

सी++
C++ के प्रारंभिक संस्करण इसकी अनुमति देंगे  सूचक बदला जाए; ऐसा करने से प्रोग्रामर यह बदल सकता है कि कोई विधि किस ऑब्जेक्ट पर काम कर रही है। यह सुविधा अंततः हटा दी गई, और अब   C++ में वैल्यू (कंप्यूटर साइंस)#असाइनमेंट है: एल-वैल्यू और आर-वैल्यू|आर-वैल्यू। C++ के प्रारंभिक संस्करणों में संदर्भ सम्मिलित नहीं थे और यह सुझाव दिया गया है कि यदि शुरुआत से ही C++ में ऐसा होता,  संदर्भ होता, सूचक नहीं।

C++ वस्तुओं को स्रोत कोड कथन के साथ स्वयं को नष्ट करने देता है:.

सी
कीवर्ड  सी शार्प (प्रोग्रामिंग भाषा) में|सी# संदर्भ प्रकारों के लिए जावा की तरह ही काम करता है। चूँकि, C# मान प्रकारों के भीतर,   सामान्य परिवर्तनीय चर संदर्भ के समान होने के कारण, इसमें अधिक  भिन्न शब्दार्थ हैं, और यह किसी असाइनमेंट के बाईं ओर भी हो सकता है।

का प्रयोग  C# में विधि के भीतर बाहरी फ़ील्ड वैरिएबल के संदर्भ की अनुमति देना है जिसमें स्थानीय वैरिएबल होता है जिसका नाम समान होता है। ऐसी स्थिति में, उदाहरण के लिए, कथन   विधि के भीतर स्थानीय चर का प्रकार और मान निर्दिष्ट किया जाएगा   को , जबकि कथन   बाहरी फ़ील्ड वैरिएबल का प्रकार और मान निर्दिष्ट करेगा.

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

डायलन
प्रोग्रामिंग भाषा में डायलन (प्रोग्रामिंग भाषा), जो ऑब्जेक्ट-ओरिएंटेड भाषा है जो बहुपद्धति का समर्थन करती है और इसकी अवधारणा नहीं है, किसी ऑब्जेक्ट को संदेश भेजना अभी भी सिंटैक्स में रखा जाता है। नीचे दिए गए दोनों फॉर्म ही तरह से काम करते हैं; अंतर केवल वाक्यात्मक शर्करा है। ऑब्जेक्ट.विधि(परम1, परम2)

और

विधि (ऑब्जेक्ट, परम1, परम2)

एफिल
एक वर्ग पाठ के भीतर, वर्तमान प्रकार वर्तमान वर्ग से प्राप्त प्रकार है। किसी कक्षा की सुविधाओं (दिनचर्या, आदेश और प्रश्न) के भीतर, कोई कीवर्ड का उपयोग कर सकता है  वर्तमान वर्ग और उसकी विशेषताओं का संदर्भ देने के लिए। कीवर्ड का उपयोग   कीवर्ड के रूप में वैकल्पिक है   इसका तात्पर्य केवल वर्तमान वर्ग सुविधा के नाम को खुले तौर पर संदर्भित करना है। उदाहरण के लिए: किसी के पास क्लास MY_CLASS में `फू' सुविधा हो सकती है और इसे इसके द्वारा संदर्भित किया जा सकता है:

 कक्षा मेरी कक्षा सुविधा--पहुँच foo: पूर्णांक मेरा_फलन: पूर्णांक करना परिणाम:= फू अंत अंत  पंक्ति #10 (ऊपर) का निहित संदर्भ है  सरल `फू' पर कॉल करके।

पंक्ति #10 (नीचे) का स्पष्ट संदर्भ है  `Current.foo' पर कॉल द्वारा।

 कक्षा मेरी कक्षा सुविधा--पहुँच foo: पूर्णांक मेरा_फलन: पूर्णांक करना परिणाम:=वर्तमान.फू अंत अंत 

कोई भी दृष्टिकोण संकलक को स्वीकार्य है, किन्तु निहित संस्करण (उदा. ) को प्राथमिकता दी जाती है क्योंकि यह कम क्रियात्मक है।

अन्य भाषाओं की तरह, ऐसे समय भी आते हैं जब कीवर्ड का उपयोग किया जाता है  अनिवार्य है, जैसे:

 कक्षा मेरी कक्षा सुविधा--पहुँच my_command -- 'वर्तमान' के साथ MY_OTHER_CLASS बनाएं स्थानीय एक्स: मेरी_अन्य_क्लास करना x.make_with_something बनाएं (वर्तमान) अंत अंत 

उपरोक्त कोड के मामले में, लाइन #11 पर make_with_something पर कॉल स्पष्ट रूप से कीवर्ड को पास करके वर्तमान क्लास को पास कर रही है.

जावा
कीवर्ड  जावा (प्रोग्रामिंग भाषा) भाषा कीवर्ड है जो उस वर्ग के वर्तमान उदाहरण का प्रतिनिधित्व करता है जिसमें यह दिखाई देता है। इसका उपयोग क्लास वेरिएबल्स और विधियों तक पहुंचने के लिए किया जाता है।

चूँकि जावा में सभी इंस्टेंस विधियाँ आभासी हैं,  कभी भी शून्य नहीं हो सकता.

जावास्क्रिप्ट
जावास्क्रिप्ट में, जो प्रोग्रामिंग या स्क्रिप्टिंग भाषा है जिसका उपयोग वेब ब्राउज़र में बड़े पैमाने पर किया जाता है,  महत्वपूर्ण कीवर्ड है, चूँकि इसका मूल्यांकन किस प्रकार किया जाता है यह इस बात पर निर्भर करता है कि इसका उपयोग कहाँ किया जाता है।


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

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

उदाहरण के लिए:

विशेष रूप से, जावास्क्रिप्ट दोनों का उपयोग करता है  और संबंधित कीवर्ड  (अधिकांश अन्य भाषाओं के विपरीत जो या दूसरे को नियोजित करती हैं), साथ   विशेष रूप से वेब कर्मियों तक ही सीमित रखा जा रहा है। अंत में, वैश्विक (विंडो या समतुल्य) ऑब्जेक्ट को विशेष रूप से संदर्भित करने के विश्वसनीय तरीके के रूप में, जावास्क्रिप्ट की सुविधा है  कीवर्ड.

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

उदाहरण के लिए, निम्नलिखित दो कार्य समतुल्य हैं:

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

पावरशेल
PowerShell में विशेष स्वचालित चर  पाइपलाइन ऑब्जेक्ट में वर्तमान ऑब्जेक्ट सम्मिलित है। आप इस वेरिएबल का उपयोग उन कमांड्स में कर सकते हैं जो प्रत्येक ऑब्जेक्ट पर या पाइपलाइन में चयनित ऑब्जेक्ट पर कार्रवाई करते हैं।  एक, दो , तीन | % { $_ लिखें } पॉवरशेल 5.0 से भी प्रारंभ होता है, जो कक्षाओं और अन्य उपयोगकर्ता-परिभाषित प्रकारों को परिभाषित करने के लिए औपचारिक वाक्यविन्यास जोड़ता है,  वेरिएबल ऑब्जेक्ट के वर्तमान उदाहरण का वर्णन करता है।

पायथन
पायथन में, के लिए कोई कीवर्ड नहीं है. जब किसी सदस्य फलन को किसी ऑब्जेक्ट पर कॉल किया जाता है, तब यह ऑब्जेक्ट के क्लास ऑब्जेक्ट पर उसी नाम के साथ सदस्य फलन को आमंत्रित करता है, ऑब्जेक्ट स्वचालित रूप से फलन के पहले तर्क से जुड़ा होता है। इस प्रकार, विधि (कंप्यूटर प्रोग्रामिंग) का अनिवार्य पहला पैरामीटर के रूप में कार्य करता है ; इस पैरामीटर को पारंपरिक रूप से नाम दिया गया है , किन्तु नाम कुछ भी रखा जा सकता है।

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

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

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

स्वयं
Self (प्रोग्रामिंग भाषा) भाषा का नाम self के इसी प्रयोग के आधार पर रखा गया है।

एक्सबेस++
किसी वर्ग के तरीकों के भीतर सख्ती से उपयोग किया जाता है।

संदर्भित करने का दूसरा प्रणाली  उपयोग करना है.

अग्रिम पठन

 * मेयर्स, स्कॉट, 1995। अधिक प्रभावी सी++: आपके प्रोग्राम और डिज़ाइन को उत्तम बनाने के 35 नए तरीके। ISBN 0-201-63371-X स्कॉट मेयर्स
 * स्ट्रॉस्ट्रुप, बर्जने, 1994। सी++ का डिज़ाइन और विकास। एडिसन-वेस्ले पब। कं ISBN 0-201-54330-3 बज़्ने स्ट्रॉस्ट्रुप