2011-01-12 3 views

Répondre

3

Plus ou moins, c'est vrai; tout ce qui compile sous C++ ou Objective-C sera compilé avec le compilateur Objective-C++.

Cependant, il existe des arêtes où cela n'est pas vrai et une poignée de différences de comportement. Cependant, je ne connais pas de différences comportementales spécifiques au moment de l'exécution. Les différences devraient généralement apparaître au cours de la compilation et surtout comme des problèmes causés par la notion de types «améliorée» de C++.

La surcharge de l'opérateur peut être extrêmement problématique, cependant. Si un corps de code fait un usage intensif de la surcharge de l'opérateur, cela peut poser problème lors du premier mélange d'Objective-C. Mais, encore une fois, typiquement comme des avertissements de compilateur et rarement comme des bogues à l'exécution.

+0

Voilà la réponse que j'espérais! –

+0

(bien que voir ma réponse ci-dessous) –

2

Objective-C est un sur-ensemble de C seulement. Vous pouvez mélanger C++ avec Objective-C - c'est ce qu'on appelle Objective-C++ - mais il y a certaines règles que vous devez suivre.
Ici vous pouvez voir toutes les règles qui doivent être suivies: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Articles/ocCPlusPlus.html

EDIT: Ceci est une citation du site du développeur: « compilateur Objective-C d'Apple vous permet de mélanger librement code C++ et Objective-C dans le Le même fichier source Objective-C++ est un hybride Objective-C/C++, qui vous permet d'utiliser les bibliothèques C++ existantes de vos applications Objective-C. Donc, il est clairement dit que le mélange de C++ et d'Objective-C s'appelle Objective-C++, mais ce n'est pas un sur-ensemble de C++, mais c'est deux langages qui, avec certaines règles, peuvent être utilisés ensemble. (Par exemple, vous ne pouvez pas mélanger les classes objectives-c et C++ pendant l'héritage, mais il y en a d'autres aussi.)

0

Je suppose qu'il existe au moins un exemple de code Objective-C valide qui n'est pas valide Objective-C++:

void SayHello() 
{ 
    char* this = "hello!"; 
    printf("%s", this); 
} 

(ce que quelqu'un serait en train de faire nommer une variable « ceci », je ne sais pas)

+0

Yup; vous pouvez arriver avec une poignée de petites arêtes vives comme celle-ci. Je crois que "id" peut faire des choses aussi, dans certaines circonstances. – bbum

Questions connexes