¿Qué es el objetivo C ++? [cerrado]

164

¿Qué es Objective C ++ y puedo usar este lenguaje en Xcode?

Saurabh
fuente
La razón cercana "difícil de decir lo que se pregunta" fue una razón más antigua para cerrar una pregunta. En estos días, la razón sería "demasiado amplia" ya que el OP es realmente dos preguntas diferentes. Primero, explicar Objective C ++ tomaría varias páginas para abordar, y segundo, la codificación para iOS se realiza específicamente usando Objective C y XCode es el IDE predeterminado para el desarrollo de iOS, por lo que, aunque los dos están relacionados, es una pregunta demasiado grande en sí misma. Este tipo de preguntas deben trasladarse al sitio de documentación.
Kelly S. French
1
@ DaveVoyles-MSFT: Me cuesta mucho tomar en serio a alguien que piensa que rechazar una pregunta y que el asesinato en masa mecanizado, industrializado, organizado y sistemático de más de 6 millones de personas es lo mismo.
Jörg W Mittag
3
@ JörgWMittag Lo siento, pero los moderadores de Stack Overflow no han respondido a su respuesta.
Dave Voyles
1
@ DaveVoyles-MSFT: La razón del voto cerrado "no es una pregunta real" fue eliminada hace años.
Jörg W Mittag

Respuestas:

157

Objective-C ++ es simplemente un código fuente que combina clases de Objective-C y clases de C ++ (dos entidades completamente no relacionadas). Su código C ++ funcionará, como antes, y el ejecutable resultante se vinculará con el tiempo de ejecución de Objective-C, por lo que sus clases de Objective-C también funcionarán. Definitivamente puedes usarlo en Xcode: nombra tus archivos con la .mmextensión.

Además, es posible que desee leer la documentación de Apple (lamentablemente eliminada, pero archivada) en Objective-C ++ .

Doches
fuente
2
la sección de limitación en ese enlace dice esto y vale la pena citar Objective-C ++ no agrega características de C ++ a las clases de Objective-C, ni agrega características de Objective-C a las clases de C ++. Por ejemplo, no puede usar la sintaxis Objective-C para llamar a un objeto C ++, no puede agregar constructores o destructores a un objeto Objective-C, y no puede usar las palabras clave this y self indistintamente. Las jerarquías de clases son separadas; una clase C ++ no puede heredar de una clase Objective-C, y una clase Objective-C no puede heredar de una clase C ++. Además, no se admite el manejo de excepciones en varios idiomas
según el
33

Objective-C ++ es Objective-C (probablemente con Cocoa Framework) con la capacidad de vincularse con código C ++ (clases probables).

Sí, puede usar este lenguaje en Xcode para desarrollar para Mac OS X, iPhone / iPodTouch, iPad. Funciona muy bien.

No tiene que hacer nada extraño en su proyecto para usar Objective-C ++. Simplemente nombra tus archivos Objective-C con la extensión .mm (en lugar de .m ) y listo.

Es mi arquitectura favorita: desarrollar una biblioteca de clase base de mi juego / aplicación en C ++ para poder reutilizarla en otras plataformas (Windows, Linux) y usar Cocoa solo para las cosas específicas de la interfaz de usuario de iPhone / iPad .

Pablo Santa Cruz
fuente
10
No se trata de vincular con C ++, ¿querías decir mezclar ?
Georg Fritzsche
6

Si desea utilizar Objective-c ++ pero no desea nombrar sus archivos, consulte .mmmi respuesta a una pregunta similar .

Sin cambiar ningún .m a .mm ni nada por el estilo, si hace clic en su proyecto, haga clic en tagets-> configuración de construcción, vaya a "LLVM GCC 4.2 - Idiomas" (el nuevo xcode dice "Apple LLVM compiler 4.2" ) verá las fuentes de compilación como cambiar ese valor a Objective-C ++ ;

John Riselvato
fuente
44
Si bien puede hacer esto, no es tan portátil y puede ser confuso para alguien que está tratando de mantener su código donde .s es un encabezado y .r son archivos de implementación.
Grady Player
¿De dónde sacas .s y .r? Puede usar .m estándar para el archivo de método y .h para el encabezado como si usara Objective-c simple.
John Riselvato
Solo digo que .m significa algo, y para hacerlo significar algo más no es estándar.
Grady Player
En Objective-c para usar el vector std (a c ++ std), necesitaría Objective-c ++ activado. No tendría sentido para mí crear una extensión de tipo de archivo diferente solo para usar vectores dentro de mi código de objetivo-c.
John Riselvato
13
absolutamente, usaría 'cout' o cualquier cosa que no sea parte de C.
Grady Player