Let’s discuss difference between c and c++ and relation between C and C++
Difference Between C and C++
C | C++ |
Dennis Ritchie developed the programming language C at AT&T Bell Labs from 1969 to 1973. | Bjarne Stroustrup, a brilliant mind, created C++ in 1979. |
C lacks support for essential features such as polymorphism, encapsulation, and inheritance, making it unsuitable for object-oriented programming. | The support for polymorphism, encapsulation, and inheritance in C++ is one of the key reasons why it is regarded as a powerful object-oriented programming language. |
C is a subset of C++ programming language. | C++ includes almost all the features of C, making it a superset of the language. |
C programming language is exceptionally well-suited for supporting procedural programming in code development. | C++ is a hybrid language, supporting both procedural and object oriented programming. |
C separates data and functions due to being a procedural language. | Objects in C++ offer a robust mechanism for bundling together data and functions, resulting in powerful encapsulation capabilities. |
Information hiding is not supported by C. | Encapsulation is a powerful technique that securely hides data within data structures and operators, ensuring they are used exactly as intended. |
C supports built-in data types. | C++ supports both built-in and user-defined data types. |
C is classified as a function-oriented language because it has the characteristics of a procedural programming language. | C++ is an object-oriented language, as it follows the principles of object-oriented programming. |
The file extension is “.c”. | The file extension options include “.cpp”, “.c++”, “.cc”, or “.cxx”. |
In C, inheritance is not supported. | Inheritance is supported by C++. |
C uses scanf() and printf() functions for input and output operations. These functions are commonly used to read input from the user and display output to the screen. They provide a convenient way to interact with the user and display information. | In C++, cin and cout are used for performing input and output operations. |
Access modifiers are not present in C structures. | Access modifiers are used in C++ structures to manage visibility and ensure data protection. |
C does not provide direct support for exception handling. | C++ supports exception handling. |
Key Relation and Difference Between C and C++
- In C++, you have the advantage of using classes to group together data and methods, while C lacks this feature.
- Additionally, C++ supports inheritance, allowing one class to inherit the properties of another, a capability that C does not offer.
- Polymorphism, another powerful feature of C++, enables objects of different types to be treated similarly, which is not possible in C.
- Moreover, C++ is a compiled language, meaning that the code is converted into machine code before execution, whereas C is interpreted line by line.
- C++ is a powerful programming language that integrates object-oriented programming (OOP), while C follows a procedural approach.
- C++ has automatic memory management with constructors and destructors, whereas C relies on manual memory management. The C++ Standard Library offers a wide range of container classes, surpassing C in this aspect. C++ has stricter type checking and provides extensive support for exception handling, unlike C.
- C++ allows the usage of templates for code reuse, which is not possible in C. The C++ Standard Library has I/O stream classes for seamless input and output handling, while the C Standard Library uses a basic file-based I/O approach.
- Although C may have faster performance, the versatility and power of C++ outweigh this advantage.
- C code can be used in C++ programs, but not the other way round, as C++ introduces additional features and syntax that C does not have.
- C++ is superset of C.
- As C++ adds keyword that are not reserved in C, these added keywords can be used as identifiers in C. (but no C++ compiler can compile such C program).
- C programmers can omit function prototypes.
- The memory allocation operators new and delete of C++ replace standard C’s malloc (memory allocation) and free function.
- The standard C++ string class replaces the character array processing functions declared in the standard C library’s <cstring> header file.
- The C++ iostream class library replaces standard C’s stdio function library for console input and output.
- C++ try/catch/throw exception handling mechanism replaces standard C’s setjmp() and longjmp() functions.
- C++ is a better version of C.
- C++ is a general purpose language.
- C++ supports object oriented programming (OOP).
- C++ supports generic programming, where we can use data type as argument.
- C++ is bias towards system programming.
- C++ supports data abstraction.
- C++ supports both types of overloading i.e. method overloading and operator overloading.
- C++ allows pointer arithmetic.
- The access controls available in C++ are public, protected, private and friend.
- C++ is a statically types language that requires all variables declared with a specific type.
History of C
- Ken Thompson developed Language B in 1970 at Bell Labs.
- In 1971, Dennis Ritchie expanded on B by introducing character types and rewrote the compiler to generate PDP-11 machine instructions.
- This enhanced version of B was called ‘new B’ or ‘NB’.
- When the PDP-11 computer arrived at Bell Labs, Ritchie created a new language based on B, which he named C.
- By early 1973, the foundation of modern C was laid.
- During the 1980s, the popularity of the C language grew significantly. Compilers became widely accessible for different machine architectures and operating systems.
History of C++
- The earlier version of C++ language, known as “C with classes” have been in use since 1980.
- The first use of C++ outside a research organization started in July 1983.
- Rick Mascitti coined the term C++ in the summer of 1983 as an extension of C.
- BCPL (Basic Combined Programming Language) // comment conversion is reintroduced in C++
- Other main source of inspiration for C++ was Simula67.
- The class concept in C++ was borrowed from Simula67.
- The facility of overloading operators and the freedom to place a declaration wherever a statement can occur of C++ resembles Algol68.
- The exception handling mechanism of C++ was inspired partly by Ada and ML.
- Other developments during 1985-1995 (multiple inheritance, pure virtual functions and namespaces) were driven by experience with the use of C++
- Some of the important milestones on the road of Object Orientation are
- 1968 – Simula67 – The first object oriented language.
- 1970 – Graphical User Interface (GUI) developed using Object Orientation.
- 1972 – David Parma’s seminar paper on “Information hiding”
- 1980 – First version of Smalltalk(Alan Kay)
- 1983 – First version of C++
- 1988 – First version of Eiffel (Bertrand Meyer)
- C++ is influenced by ALGO68, C,ML and Simula.
- Languages that are influenced by C++ are Ada95, C#, Java,Perl, Python and PHP etc.
- In the journey of C++, standardized (by ISO) versions are –
C++ 98 released in 1998
C++03 released in 2003
C++11 released in 2011
C++14 released in 2014
C++17 released in 2017
Difference between C++ with other OOP languages
Eiffel by Bertrand Meyer in 1985. SmallTalk by Alan Kay, Dan Ingalls, Adele Goldberg in 1972.
Feature | Eiffel (1985) | Smalltalk(1972) | C++ (1983) | C# (2000) | Java (1995) |
Object – Orientation | Pure | Pure | Hybrid/Multi-Paradigm | Hybrid | Hybrid |
Static / Dynamic Typing | Static | Dynamic | Static | Static | Static |
Generic Classes | Yes | Not Applicable | Yes | No | No |
Inheritance | Multiple | Single | Multiple | Single Class,multiple interfaces | Single class, multiple interfaces |
Feature Renaming | Yes | No | No | No | No |
Method Overloading | No | No | Yes | Yes | Yes |
Operator Overloading | Yes | Yes | Yes | Yes | No |
Higher Order Functions | Agents (with version 5) | Blocks | No | No | No |
Lexical Closures | Yes(Inline agents) | Yes(blocks) | No | No | No |
Garbage Collection | Mark and Sweep or Generational | Mark and Sweep or Generational | None | Mark and Sweep or Generational | Mark and Sweep or Generational |
Uniform Access | Yes | Not Applicable | No | No | No |
Class Variables/Methods | No | Yes | Yes | Yes | Yes |
Reflection | Yes (version 5) | Yes | No | Yes | Yes |
Access Control | Selective Export | Protected Data, Public Methods | public, protected,private | public, protected,private | public, protected,private |
Design by Contract | Yes | No | No | No | No |
Multithreading | Implementation Dependent | Implementation Dependent | Libraries | Yes | Yes |
Regular Expressions | No | No | No | Standard Library | Standard Library |
Pointer Arithmetic | No | No | Yes | Yes | No |
Language Integration | C,C++,Java | C | C,Assembler | All .NET Languages | C, some C++ |
Built in Security | No | No | No | Yes | Yes |