วัตถุประสงค์ C ++ คืออะไร [ปิด]


165

Objective C ++ คืออะไรและฉันสามารถใช้ภาษานี้ใน Xcode ได้อย่างไร



เหตุผลที่ใกล้ชิด 'ยากที่จะบอกสิ่งที่ถูกถาม' เป็นเหตุผลที่เก่ากว่าสำหรับการปิดคำถาม ทุกวันนี้เหตุผลจะกว้างเกินไปเนื่องจาก OP เป็นคำถามที่แตกต่างกันสองข้อ ขั้นแรกการอธิบาย Objective C ++ จะใช้เวลาหลายหน้าในการจัดการและประการที่สองการเข้ารหัสสำหรับ iOS นั้นทำโดยใช้ Objective C และ XCode เป็น IDE เริ่มต้นสำหรับการพัฒนา iOS แม้ว่าทั้งสองจะเกี่ยวข้องกัน คำถามประเภทนี้ควรถูกย้ายไปยังไซต์เอกสาร
Kelly S. French

1
@ DaveVoyles-MSFT: ฉันมีเวลายากที่จะมีใครบางคนจริงจังที่คิดว่าการ downvoting คำถามและการสังหารหมู่โดยใช้ยานยนต์อุตสาหกรรมจัดระเบียบและเป็นระบบมากกว่า 6 ล้านคนเป็นสิ่งเดียวกัน
Jörg W Mittag

3
@ JörgWMittagฉันขอโทษ แต่คุณตอบถูกปิดเนื่องจากไม่ใช่ผู้ดูแลกองคำถามโอเวอร์โฟลว์
Dave Voyles

1
@ DaveVoyles-MSFT: "ไม่ใช่คำถามจริง" เหตุผลการปิดการโหวตถูกลบออกเมื่อหลายปีก่อน
Jörg W Mittag

คำตอบ:


158

Objective-C ++ เป็นเพียงซอร์สโค้ดที่รวมคลาส Objective-C และคลาส C ++ (เอนทิตีทั้งสองที่ไม่เกี่ยวข้องกันทั้งหมด) รหัส C ++ ของคุณจะทำงานเหมือนก่อนหน้าและผลลัพธ์ที่ได้จะถูกเชื่อมโยงกับรันไทม์ Objective-C ดังนั้นคลาส Objective-C ของคุณก็จะทำงานเช่นกัน คุณสามารถใช้มันใน Xcode - ตั้งชื่อไฟล์ของคุณด้วย.mmนามสกุล

นอกจากนี้คุณอาจต้องการที่จะอ่านแอปเปิ้ล (ลบเศร้า แต่เก็บไว้) เอกสารเกี่ยวกับ Objective-C


2
ส่วนข้อ จำกัด ในลิงก์นั้นบอกว่านี่เป็นสิ่งที่คุ้มค่าและการอ้างอิงObjective-C ++ ไม่ได้เพิ่มคุณสมบัติ C ++ ให้กับคลาส Objective-C และไม่ได้เพิ่มคุณสมบัติ Objective-C ให้กับคลาส C ++ ตัวอย่างเช่นคุณไม่สามารถใช้ไวยากรณ์ Objective-C เพื่อเรียกวัตถุ C ++ ได้คุณไม่สามารถเพิ่มคอนสตรัคเตอร์หรือ destructors ให้กับออบเจ็กต์ Objective-C และคุณไม่สามารถใช้คำหลักนี้และสามารถใช้แทนกันได้ ลำดับชั้นของชั้นจะแยกจากกัน คลาส C ++ ไม่สามารถสืบทอดจากคลาส Objective-C และคลาส Objective-C ไม่สามารถสืบทอดจากคลาส C ++ ได้ นอกจากนี้ยังไม่รองรับการจัดการข้อยกเว้นหลายภาษา
เช่น

33

Objective-C ++ คือ Objective-C (อาจมี Cocoa Framework) ที่มีความสามารถในการเชื่อมโยงกับรหัส C ++ (คลาสที่เป็นไปได้)

ใช่คุณสามารถใช้ภาษานี้ใน Xcode เพื่อพัฒนาสำหรับ Mac OS X, iPhone / iPodTouch, iPad มันใช้งานได้ดีมาก

คุณไม่ต้องทำอะไรแปลก ๆ ในโครงการของคุณเพื่อใช้ Objective-C ++ เพียงตั้งชื่อไฟล์ Objective-C ของคุณด้วยนามสกุล. mm (แทน. m ) และคุณก็พร้อมใช้งาน

มันเป็นสถาปัตยกรรมที่ฉันโปรดปราน: พัฒนาไลบรารี่พื้นฐานของเกม / แอปพลิเคชันของฉันใน C ++ ดังนั้นฉันจึงสามารถนำมันกลับมาใช้ในแพลตฟอร์มอื่น (Windows, Linux) และใช้ Cocoa สำหรับไอเท็มเฉพาะสำหรับ iPhone / iPad UI


10
มันไม่เกี่ยวกับการเชื่อมโยงกับ C ++ - คุณหมายถึงมิกซ์หรือเปล่า?
Georg Fritzsche

6

หากคุณต้องการที่จะใช้ Objective-C ++ แต่ไม่ต้องการที่จะตั้งชื่อไฟล์ของคุณ.mmเช็คเอาคำตอบของฉันกับคำถามที่คล้ายกัน

หากคุณคลิกโครงการของคุณให้คลิก tagets-> build settings ไปจนถึง "LLVM GCC 4.2 - Languages" (xcode ใหม่บอกว่า"Apple LLVM compiler 4.2" ) จะเห็นแหล่งที่มาคอมไพล์เมื่อเปลี่ยนค่านั้นเป็นObjective-C ++ ;


4
แม้ว่าคุณจะสามารถทำได้ แต่ก็ไม่ได้พกพาสะดวกและอาจสับสนกับคนที่พยายามรักษารหัสของคุณโดยที่. s เป็นส่วนหัวและ. r เป็นไฟล์การนำไปใช้งาน
ผู้เล่นเกรดี้ผู้เล่น

คุณมาจากไหนและ. r คุณสามารถใช้. m มาตรฐานสำหรับไฟล์วิธีการและ. h สำหรับส่วนหัวเหมือนกับว่าคุณใช้ Objective-c แบบธรรมดา
John Riselvato

ฉันแค่บอกว่า. m หมายถึงบางสิ่งบางอย่างและทำให้มันหมายความว่าอย่างอื่นนั้นไม่ใช่มาตรฐาน
ผู้เล่น Grady

ใน Objective-c เพื่อใช้ std vector (a c ++ std) ฉันต้องเปิด Objective-c ++ มันจะไม่สมเหตุสมผลสำหรับฉันที่จะสร้างส่วนขยายประเภทไฟล์ที่แตกต่างกันเพียงเพื่อใช้เวคเตอร์ในโค้ดวัตถุประสงค์ของฉัน
จอห์น Riselvato

13
มันจะใช้ 'cout' หรืออะไรก็ตามที่ไม่ได้เป็นส่วนหนึ่งของ C
Grady Player
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.