Difference Between C and C++
In this article, we are going to discuss the difference between C and C++ programming languages. C++ is often considered to be a superset of C, but this is not strictly true. Most of the C language code can easily be converted to compile correctly in C++, but there are a few differences that cause some valid C code to be invalid in C++ or to behave differently in C++. The common portability issue is that C++ defines many new keywords, such as new and class, that may be used as identifiers (e.g. variable names) in a C program. As the syntax of C and C++ has some similarities, but the basic approach in a C++ program is radically different from that in a C program. So there are a few major differences between C and C++.
|S#||C language||C++ language|
|1.||C is procedure-oriented language.||C++ is an Object Oriented language.|
|2.||C language is developed by Dennis Ritchie.||C++ is an idea of Bjarne Stroustrup.|
|3.||C is introduced in 1972.||C++ is developed in 1979.|
|4.||C emphasizes functions.||C++ emphasizes more on data.|
|5.||C is a middle-level language.||C++ is a high-level language.|
|6.||C is used to design medium size programs.||C++ is used to design large programs.|
|7.||Prototyping is not necessary for C language.||Prototyping is Compulsory in C++.|
|8.||A character constant in C is automatically converted into its equivalent ASCII.||No such automatic conversion in C++.|
|9.||In C main() function can be called within the program like the invocation of other functions.||But in C++ it can be called with the help of classes.|
|10.||In C, register variables cannot be addressed.||In C++, it is possible.|
|11.||Major input output functions are available in <stdio.h>.||Major input output functions are available in <iostream.h>.|
|12.||It does not support the concept of classes.||It successfully implements the concepts of classes and objects.|
|13.||It does not support the concept of polymorphism.||It successfully implements the concept of polymorphism in the form of function and operator overloading.|
|14.||C is a weekly typed language.||It is strongly typed language.|
|15.||The C array model is pointer-based and one-dimensional without bound checking.||Multi-dimensional, dynamic, and bound-checked arrays are implemented in C++.|
|16.||C likes calls that pass primitive data or objects to functions.||C++ is called that passes functions or messages to objects.|
|17.||It can not model real-world applications.||It is used for real-world modeling.|
|18.||C is a superset of B.||C++ is a superset of C.|
|19.||Data is not secured.||Data is secured (hidden).|
|20.||C uses top-down approch.||C++ uses bottom-up approach.|
|21.||C is function-driven.||C++ is object driven.|
|22.||C does not allow reference variables.||C++ allows reference variables.|
|23.||It takes lesser memory for execution.||It takes more memory for execution.|
|24.||By using C, GUI Software can not be designed.||By using C++, GUI-based software can be designed.|
|25.||It is less compatible with higher versions of Windows.||It is compatible with all versions of Windows.|
|26.||It is an early 3rd generation language.||It is a lateral 3rd generation language.|
|27.||It is not compatible with Java and C# programming language.||It is compatible with Java and C# programming language.|
|28.||It has a deep connection with Unix operating system.||It has no connection with Unix and Unify operating systems.|
|29.||It is powerful in graphics programming.||It has weak properties in handling graphics programming.|
|30.||Unix operating system was developed in C language.||Some of the components of the Red hat Linux operating system were written in C++ programming language.|
|31.||Red hat Linux’s first multiuser GUI operating system has no connection with C language.||Some of the components of the Red hat Linux operating system were written in C++ programming language.|
|32.||Reverse keywords are small.||Have large reserve keywords.|
|33.||Have no virtual function property.||Have virtual function property.|
|34.||Enumeration is weekly used in C programming language.||Enumeration is powerfully used in C++.|
|35.||C++ programs cannot be compiled using a C compiler.||C and C++ programs are compiled and executed in a C++ compiler environment.|
|36.||Overloading is not possible in the C programming language.||Overloading is a powerful feature in the C++ programming language.|
|37.||File handling is very easy in C programming language.||File handling is complex in C++ for file organization and file management.|
|38.||C language has no relationship with the Simula67 language.||The C++ language has a deep relationship with the Simula67 language.|
C++ was designed to be backward-compatible with C meaning that for the most part, C programs can compile unchanged with a C++ compiler. The below diagram depicts that C++ is a superset of C or in other words, C is a subset of C++. It also shows various features of each language.
Besides the above differences, the following are some major contrasts between C and C++:
- C structures have a different behavior as compared to C++ structures. Structures in C do not accept functions as their parts.
- C input/output is based on the library and the processes are carried out by including functions. C++ i/o is made through console commands cin and cout.
- C does not support new or delete commands. The memory operations to free or allocate memory in C are carried out by free() and malloc().
- Undeclared functions in C++ are not allowed. The function has to have a prototype defined before the main() before use in C++, although in C the functions can be declared at the point of use.
- After declaring structures and enumerators in C the variables cannot be declared for the structure right after the end of the structure as in C++.
- For an int main() in C++ a return statement may not be written but the return is mandatory in C if int main() is used.
- In C++ identifiers are not allowed to contain two or more consecutive underscores in any position. C identifiers cannot start with two or more consecutive underscores but may contain them in other positions.
- In C a character constant is automatically elevated to an integer whereas in C++ this is not the case.
- In C declaring the global variable several times is allowed but this is not allowed in C++.