उद्देश्य C ++ क्या है? [बन्द है]


164

ऑब्जेक्टिव C ++ क्या है और क्या मैं इस भाषा का Xcode में उपयोग कर सकता हूं?



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

1
@ डेव्वॉयल्स-एमएसएफटी: मैं किसी ऐसे व्यक्ति को गंभीरता से लेने में कठिनाई महसूस कर रहा हूं जो यह सोचता है कि एक सवाल को नीचा दिखाना और 6 मिलियन से अधिक लोगों की यंत्रीकृत, औद्योगिक, संगठित, व्यवस्थित सामूहिक हत्या एक ही बात है।
डब्ल्यू पर Jörg W Mittag

3
@ JörgWMittag मुझे खेद है, लेकिन आप प्रतिक्रिया को स्टैक ओवरफ्लो मध्यस्थों द्वारा एक वास्तविक प्रश्न के रूप में बंद नहीं किया गया है।
डेव वॉयल्स

1
@ डेव्वॉयल्स-एमएसएफटी: "वास्तविक प्रश्न नहीं" करीब वोट साल पहले हटा दिया गया था।
जॉर्ग डब्ल्यू मित्तग

जवाबों:


157

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

इसके अलावा, आप ऑब्जेक्टिव-सी ++ पर Apple (दुखद रूप से हटाए गए, लेकिन संग्रहीत) प्रलेखन को पढ़ना चाह सकते हैं ।


2
उस लिंक में सीमा अनुभाग, यह कहता है और यह उद्देश्य-सी ++ को
19 को भीख देता है

33

ऑब्जेक्टिव-सी ++ ऑब्जेक्टिव-सी (शायद कोको फ्रेमवर्क के साथ) सी ++ कोड (संभावित वर्गों) के साथ लिंक करने की क्षमता है।

हां, आप मैक ओएस एक्स, iPhone / iPodTouch, iPad के लिए विकसित करने के लिए Xcode में इस भाषा का उपयोग कर सकते हैं। ये अच्छी तरह काम करता है।

आपको Objective-C ++ का उपयोग करने के लिए अपनी परियोजना में कुछ भी अजीब नहीं करना है। बस एक्सटेंशन के साथ अपने ऑब्जेक्टिव-सी फ़ाइलों का नाम .mm (के बजाय मीटर ) और तुम जाना अच्छा कर रहे हैं।

यह मेरी पसंदीदा वास्तुकला है: C ++ में मेरे गेम / एप्लिकेशन का बेस क्लास लाइब्रेरी विकसित करना ताकि मैं इसे अन्य प्लेटफार्मों (विंडोज, लिनक्स) में फिर से उपयोग कर सकूं और कोको का उपयोग सिर्फ आईफोन / आईपैड यूआई के विशिष्ट सामान के लिए कर सकूं।


10
इसके सी + + के साथ जोड़ने के बारे में नहीं - क्या आपका मतलब मिश्रण है ?
जॉर्ज फ्रिट्ज़

6

यदि आप Objective-c ++ का उपयोग करना चाहते हैं, लेकिन .mmएक समान प्रश्न के लिए अपने उत्तर को जांचने के लिए अपनी फ़ाइलों का नाम नहीं देना चाहते हैं ।

बिना .m to .mm या उस जैसी किसी भी चीज़ को बदले बिना, यदि आप अपने प्रोजेक्ट पर क्लिक करते हैं, तो टैगसेट्स पर क्लिक करें-> बिल्ड सेटिंग्स "LLVM GCC 4.2 - भाषाएं" के लिए सभी तरह से नीचे जाएं (नया xcode कहता है "Apple LLVM कंपाइलर 4.2" : आप संकलित स्रोतों को देखेगा, जो मान को उद्देश्य-सी ++ में बदलता है ;


4
जब आप ऐसा कर सकते हैं, तो यह उतना पोर्टेबल नहीं है और किसी ऐसे व्यक्ति को भ्रमित कर सकता है जो आपके कोड को बनाए रखने की कोशिश कर रहा है, जहां एक हेडर और .r कार्यान्वयन फाइलें हैं।
ग्रैडी प्लेयर

तुम कहाँ खींच रहे हो .s और .r से आप विधि फ़ाइल के लिए मानक .m का उपयोग कर सकते हैं और हेडर के लिए .h के रूप में अगर आप सादे उद्देश्य सी का इस्तेमाल किया है।
जॉन रिसेल्वाटो

मैं सिर्फ इतना कह रहा हूं कि .म का मतलब कुछ है, और इसका मतलब है कि कुछ और करना गैर मानक है।
ग्रैडी प्लेयर

ऑब्जेक्टिव-सी में std वेक्टर (a c ++ std) का उपयोग करने के लिए, मुझे ऑब्जेक्टिव-c ++ की आवश्यकता होगी। मेरे लिए अपने उद्देश्य-सी कोड के भीतर वैक्टर का उपयोग करने के लिए एक अलग फ़ाइल प्रकार एक्सटेंशन बनाने के लिए यह समझ में नहीं आएगा।
जॉन रिसेल्वाटो

13
बिल्कुल ऐसा होगा, यह 'cout' या ऐसी किसी भी चीज़ का उपयोग करेगा जो C का हिस्सा नहीं है
ग्रैडी प्लेयर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.