2011-01-12 9 views

答えて

3

多かれ少なかれ、それは本当です。 C++またはObjective-CでコンパイルされたものはObjective-C++コンパイラでコンパイルされます。

しかし、これは真実ではなく、いくつかの動作上の違いがあります。

私は特定の実行時の動作上の違いについて認識していません。その違いは、一般にコンパイル時に現れるべきであり、主にC++の「拡張された」タイプの概念によって引き起こされる問題です。

しかし、オペレータのオーバーロードは非常に問題になる可能性があります。コードの本体で演算子のオーバーロードが頻繁に使用されると、初めてObjective-Cを混在させるときに問題が発生する可能性があります。しかし、やはり、通常、コンパイラの警告としてであり、実行時のバグとしてはめったにありません。

+0

! –

+0

(私の答えは下記参照) –

2

Objective-CはCのみのスーパーセットです。 C++とObjective-C + Objective-C++を混在させることはできますが、Objective-C++と呼ばれることもあります。 http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Articles/ocCPlusPlus.html

EDITは:これは、開発者のウェブサイトからの引用です:あなたが続いする必要があるすべてのルールを見ることができます。ここ
は、「AppleのObjective-Cのコンパイラは、あなたが自由にC++とObjective-Cのコードを混在させることができます同じソースファイルObjective-C/C++言語のハイブリッドはObjective-C++と呼ばれ、Objective-Cアプリケーションから既存のC++ライブラリを利用することができます。 "

C++とObjective-Cの混在はObjective-C++と呼ばれていますが、これはC++のスーパーセットではありませんが、いくつかのルールを組み合わせて使用​​できる2つの言語です。 (例えば、継承の際にobjective-cとC++のクラスを混在させることはできませんが、それ以外のものもあります)

0

有効なObjective-Cコードの例が少なくとも1つあります。Objective-C++:

私が望んでいた答えだ
void SayHello() 
{ 
    char* this = "hello!"; 
    printf("%s", this); 
} 

(誰かが、変数の命名やっているだろうか「この」、私は知らない)

+0

はい。このような小さな鋭いエッジの一握りを思いつくことができます。私は、特定の状況下では、「id」が物事を変えることもできると信じています。 – bbum

関連する問題