2010-09-01 37 views
22

क्या मैं एक चट्टान के नीचे सो रहा था, तो एक नया प्रतीक सी ++ भाषा विनिर्देश में शामिल हो गया है?सी ++ में "^" प्रतीक क्या है?

मैं सिर्फ निम्नलिखित प्रश्न का सामना करना पड़ा:

Restrict Text Box to only accept 10 digit number

कौन सा पता चलता है कि '^' प्रतीक किसी भी तरह सी का हिस्सा है ++ (नहीं एक की विरासत अर्थ में बिटवाइज़-XOR)

है ऐसा क्यों?

यदि हां, तो इसका क्या अर्थ है? (मैंने google the question करने की कोशिश की लेकिन Google संतोषजनक उत्तरों के साथ नहीं आया)

+3

यदि आपको '^' पसंद है, तो आपसे प्यार होगा कि उन्होंने प्रबंधित प्रकारों के संदर्भों के लिए '%' '' '' '' के साथ भी बदल दिया है। ऐसा लगता है कि उन्होंने अभी इसे पेंच करने का फैसला किया है, आइए बस नए ऑपरेटरों का आविष्कार करें और अभी भी "सी ++" भाषा को कॉल करें। –

+0

@ केन साइमन: सी ++ के प्रकार कब प्रबंधित होते हैं? सी # ने प्रबंधित प्रकार हैं, लेकिन * मानक * सी ++ नहीं। –

+0

@ केन: भाषा को सी ++ नहीं कहा जाता है, इसे सी ++/सीएलआई कहा जाता है। इस कारण इसे एक कारण कहा जाता है कि सादा सी ++ सी ++/सीएलआई का पूरा सबसेट है (यानी कोई अनुरूप सी ++ प्रोग्राम एक अनुरूप सी ++/सीएलआई प्रोग्राम भी है)। –

उत्तर

30

सी ++ में "^" प्रतीक बिटवाई अनन्य या (xor) ऑपरेटर है। एक बिट के लिए आपके पास 0^0 = 1^1 = 0 और 0^1 = 1^0 = 1 है।

हालांकि, विचाराधीन आप इसे की बात कर रहे नेट C++/CLI या यह काम करती है रूप में जाना जाता मंच पर सी ++ विकास के लिए माइक्रोसॉफ्ट विशेष सिंटेक्स का हिस्सा है।

.NET पर मेमोरी कचरा इकट्ठा किया गया है और वस्तुओं के संदर्भों को ट्रैक करना होगा। यह सामान्य C++ पॉइंटर का उपयोग करके इन ऑब्जेक्ट्स को संदर्भित करना असंभव बनाता है। माइक्रोसॉफ्ट ने "^" प्रतीक का पुन: उपयोग करने का निर्णय लिया है ताकि एक परिवर्तक को कुछ पॉइंटर के समान घोषित किया जा सके जो प्रबंधित ढेर पर किसी ऑब्जेक्ट को संदर्भित कर सके।

^ (Handle to Object on Managed Heap)

9

संदर्भित जवाब में, यह मानक C++ भाषा का हिस्सा नहीं है, यह C++/CLI भाषा कि Microsoft .NET इंटरॉप के लिए एक साथ पत्थर का हिस्सा है। उस भाषा में,^का अर्थ है "प्रबंधित स्मृति में सूचक।"

1

यह मानक सी ++ का हिस्सा नहीं है। यह प्रबंधित सी ++ का हिस्सा है (माइक्रोसॉफ्ट की भाषा .NET के लिए सी ++ की तरह)। इसका अर्थ यह है कि "-- "का संदर्भ एक ही तरीके से" * "का अर्थ है" एक पॉइंटर टू ----- "मानक सी ++ है।

+0

यह मानक सी ++ का हिस्सा है, जिसमें यह बिटवाई एक्सओआर ऑपरेटर है। – You

+7

हाँ, और "*" का अर्थ "गुणा करें" है, लेकिन यह नहीं है कि हम यहां किस बारे में बात कर रहे हैं। –

+0

डबल नंबर। '^' एक ** ट्रैकिंग हैंडल ** से ---- संदर्भ का मतलब सी ++ में कुछ और है, और '%' मानक सी ++ संदर्भ '&' के बराबर प्रबंधित है। और यह सी ++/सीएलआई में है। निष्क्रिय "सी ++ के लिए प्रबंधित एक्सटेंशन" में, इसे '__gc *' अर्थात् कचरा कलेक्टर संगत सूचक के रूप में लिखा गया था। –

3

'^' वाक्यविन्यास tracking reference को C++/CLI में संदर्भित करता है, जो सी ++ के लिए एक Microsoft एक्सटेंशन है जो प्रबंधित कोड के साथ बातचीत को सक्षम बनाता है।

+0

नहीं, यह नहीं है। '%' एक ट्रैकिंग संदर्भ है।'^' एक ट्रैकिंग हैंडल है। (उस पृष्ठ को पढ़ें जिसे आपने लिंक किया था।) –

12

विजुअल सी ++ में, ^ किसी प्रबंधित ऑब्जेक्ट को हैंडल का प्रतिनिधित्व करता है। अनिवार्य रूप से सी # में एक संदर्भ होगा। उन्हें new के बजाय gcnew के साथ आवंटित करें, और वे आपके लिए एकत्र कचरा होगा। इस प्रकार विज़ुअल सी ++ सीएलआई के साथ इंटरैक्ट करता है।

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