views:

234

answers:

4

Hi Guys,

I want to know the difference between c++ and objective-c and objective-c++. Can any one give me the difference and Can we use the c++ for iPhone development

Thank you, Madan Mohan

+3  A: 

C++ and Objective C were/are two different approaches to adding object orientation to C. Current objective C compilers also accept C++ as input, so you can build a program with some files written in Objective-C and other files written in C++. When C++ is used this way, it's often called Objective-C++.

Jerry Coffin
Okay, Thank you. Can we use C++ for iPhone development
Madan Mohan
@Madan: Yes. You need to use at least a little Objective C where your code interfaces with the iPhone's built-in libraries, but you can use C++ for pretty much everything else.
Jerry Coffin
+7  A: 

C++ is Bjarne Stroustroup's language based on adding classes and metaprogramming to C in such a way that puts most additional work into the compiler, and relies on least possible effort at runtime.

Objective-C is Brad Cox's language based on adding a SmallTalk-style dynamic message-passing runtime library to C, with a small amount of syntax addition to make it easier to use.

Objective-C++ is, to put it bluntly, what you get when you add the Objective-C runtime and syntax to C++. It has its limitations (e.g. you can't create an Objective-C subclass of a C++ class or vice versa, and Objective-C doesn't like C++ namespaces) but allows you to use C++ classes from Objective-C objects and vice versa.

You can use Objective-C++ in iPhone development. What this means practically is that you could write an application whose object model was entirely C++, where the controller layer would need to interface to Objective-C in order to use the Cocoa Touch APIs.

Graham Lee
I'll also add that Objective-C is a *strict* superset of C, while C++ is not. https://secure.wikimedia.org/wikipedia/en/wiki/Compatibility_of_C_and_C%2B%2B
Stephen Furlani
Objective-C++ is a great way to make use of STL templates like vector and map - for which there are no good, low-cost analogs in Cocoa.
westsider
A: 

1) C++ is a language derived from C that adds Object Orientation (OO) amongst other features. *
2) Objective-C is a language derived from C that adds Object Orientation (OO) amongst other features. *
3) Objective-C++ is Objective-C that you can use C++ classes with.

You CAN use C++ for iPhone development but you will need "some" Objective-C code to interface with the iPhone libraries.

(*) Though they both try to solve the same problem they do it quite differently. There is some information about the differences on wikipedia and I'm sure you can use google to find more.

Goz
A: 

You CAN use C++ for iPhone development but you will need "some" Objective-C code to interface with the iPhone libraries.

This will very likely give you code and possibly memory bloat. As you know, iOS programming should be a lean as possible: minimize both the library size and runtime memory needs. iOS programming and runtime environments are also highly optimized for Objective C.

Pure ObjC is much better than C++ for iOS. Unless you're trying to use existing large C++ code base it will probably be better to re-write from scratch. Nearly all of the C++ STL have analogs in the iOS frameworks, often easier to use, and highly optimized by Apple. Learn Objective C memory management, get familiar with the frameworks and go for it.

Fred Glover