Difference between C++ and Objective C
Key difference: C++ is a general-purpose programming language, which is developed from the originally C programming language. It was developed by Bjarne Stroustrup at Bell Labs starting in 1979. C++ was originally named C with Classes. It was renamed C++ in 1983. Objective-C is a general-purpose, high-level, object-oriented programming language. It adds Smalltalk-style messaging to the C programming language. As it is a superset of C, everything that is valid C is also valid in Objective-C.
C++ is a general-purpose programming language. It was developed from the original C programming language. It was developed by Bjarne Stroustrup at Bell Labs starting in 1979. C++ was originally named C with Classes. It was renamed C++ in 1983.
C++ is a statically typed, free-form, multi-paradigm and a compiled programming language. The C++ programming language is widely considered to be an intermediate-level language, as it made up of both high-level and low-level language features. As compared to C, C++ incorporates object oriented features, such as classes, and other enhancements.
C++ has taken over some of the popularity of the C language. C++ is now currently implemented on a wide variety of hardware and operating system platforms. It is considered to be an efficient compiler to native code. It also incorporates systems software, application software, device drivers, embedded software, high-performance server and client applications as part of its application domains, as well as entertainment software such as video games.
C++ originally started out as an enhancement to C. It was designed to be source-and-link compatible with C. It added classes, virtual functions, operator overloading, multiple inheritance, templates, exception handling, etc. However, it eventually developed enough to be considered a programming language in its own right. It was originally ratified in 1998 as ISO/IEC 14882:1998.
C++ is now commonly used for hardware design. The design is first described in C++. It is then analyzed, architecturally constrained, and scheduled to create a register-transfer level hardware description language. It would do this through high-level synthesis.
Both free and proprietary C++ compiler software is available in the market. Some examples of these software include the GNU Project, Microsoft, Intel and Embarcadero Technologies. C++ has also had a major influence on other programming languages such as C# (C Sharp) and Java.
Objective C is basically a subset of C. It was originally developed in the early 1980s by Brad Cox and Tom Love at their company Stepstone. Objective C was then selected as the main language used by NeXT for its NeXTSTEP operating system. Mac’ OS X and iOS are derived from the NeXTSTEP operating system and hence use Objective C as their main language.
Objective-C is a general-purpose, high-level, object-oriented programming language. It adds Smalltalk-style messaging to the C programming language. As it is a superset of C, everything that is valid C is also valid in Objective-C. Mainly, Objective-C adds a thin object-oriented layer on top of C. It adds syntax and semantics that allow for object oriented programming, whereas C is strictly procedural programming. Object oriented programming differs from procedural programming by focusing on grouping data and methods of manipulating this data in classes.
Some differences between C++ and Objective C:
- Objective C, like Java, does not support multiple inheritance.
- Objective C allows the user to define a protocol by declaring an Objective C class.
- Objective C does allow instance variables (data members) to be set as public, private, or protected.
- C++ gives finer access control over all of an object's elements than Objective C, with private, public, and protected keywords and the concept of friend functions.
- C++ provides a new implementation of the ANSI input/output library for stream-based I/O.
- Objective C does not have an analogous library.
- Any variable in an Objective C object may be declared as type id.
- C++ allows multiple inheritance, Objective C doesn't.
- Objective C allows method parameters to be named and the method signature includes only the names and types of the parameters and return type. Whereas, C++ member function signature contains the function name as well as just the types of the parameters/return, without their names.
- C++ uses bool, true and false, Objective C uses BOOL, YES and NO.
- C++ uses void* and NULL, Objective C prefers id and nil.
- Objective C uses "selectors" (which have type SEL) as an approximate equivalent to function pointers.
- Objective C uses a messaging paradigm via Smalltalk where one can send messages to objects through methods/selectors.
- Objective C allows one send a message to nil, unlike C++ which will crash if one tries to call a member function of NULL
- Objective C allows for dynamic dispatch, unlike C++.
- Objective C allows autogeneration of accessors for member variables using properties.
- Objective C lacks the namespace feature of C++.
- Objective C lacks an equivalent to C++ references.
- Objective C lacks templates.
- Objective C doesn't allow implicit method overloading, but C++ does.
- Objective C will allow a method and a variable to share the same name, unlike C++.
- Objective C doesn't allow objects to be created on the stack - all objects must be allocated from the heap.
- Like C++, Objective C has both structs and classes. However, in C++ they are treated as almost exactly the same, whereas in Objective C they are treated differently.
Image Courtesy: ocoudert.com, alwawee.com