Benefits of C++
+ Multiple inheritance
Objective C, like Java, does not support multiple inheritance. Instead,it allows the user to define a protocol.Declaring an Objective C class to conform to a protocol is similar to declaringa Java class to implement an interface; it defines a standard set of methods (memberfunctions) that the class must respond to. Another object can check at runtimeto see if a particular class conforms to a particular protocol. Thus, Boatwould be a subclass of Vehicle and Duck would be a subclass of bird, and bothwould conform to the FloatingThings protocol. Unlike with multiple inheritance,only method declarations (member function declarations) are included, notdefinitions or instance variables (data members). Alternatively, the dynamicnature of Objective C allows you to simulate multiple inheritance.
+ A friend-lylanguage
C++ gives finer access control over all of an object's elementsthan Objective C, with private, public, and protected keywords and the conceptof friendfunctions. Objective Cdoes allow instance variables (data members) to be set as public, private, orprotected, but does not have an equivalent construct for methods (memberfunctions).
+iostream.h
C++ provides a new implementation of the ANSI input/outputlibrary for stream-based i/o. Objective C does not have an analogous library,but some implementations of Objective C++ do allow you to call the C++ iostreamlibrary from your Objective C++ projects.
Benefits of Objective C
+ Dynamic typing and the id type
Any variable in an Objective C object may be declared as typeid, meaning a pointer to an object of an undetermined type. The type can bedetermined at run time, and the appropriate messages sent. Using Objective C'sSEL type, you can determine at runtime which message is sent to the object, andtherefore what method (member function) is accessed. To avoid runtime problems,the programmer can also test at runtime (with the respondsToSelector: method)to see which messages an object recognizes. Class methods (static memberfunctions) are also available; unlike C++ classes, Objective C classes are trueobjects and exist at runtime.
+ Categories and dynamic loading
The dynamic nature of Objective C allows existing classes to beextended at runtime. Objective C allows you to define categories, related sets ofextensions to objects you've already created. For example, in converting atext-based app into a graphics app, the code your objects needed to drawthemselves could be compiled as a category and loaded at run-time only whenneeded. This saves memory and allows you to leave your original objectsunmodified.
+ Simple and standard
C++ is a complex and evolving language, leading to differencesbetween compilers and implementations; as a result, C++ users need to be morecareful about using features like boolean types that may not be supported onall compilers. Objective C 's simplicity makes these problems less likely; ithas also helped it maintain a stable standard. (And yes, Objective C does havea BOOL data type.)
+ Shortcuts
C++ doesn't have a monopoly on convenient features, either.Objective C's additions include C++-style // comments and the #importdirective, which acts like the #include directive but ensures that eachreferenced file is included only once per project.