Difference between C and C++
- Both the languages have a similar syntax.
- Code structure of both the languages are same.
- The compilation of both the languages is similar.
- They share the same basic syntax. Nearly all of C’s operators and keywords are also present in C++ and do the same thing.
- C++ has a slightly extended grammar than C, but the basic grammar is the same.
- Basic memory model of both is very close to the hardware.
- Same notions of stack, heap, file-scope and static variables are present in both the languages.
Differences between C and C++ are:
C++ is often viewed as a superset of C. This was very nearly true when C++ was originally created, but the two languages have evolved over time with C picking up a number of features that either weren’t found in the contemporary version of C++ or still haven’t made it into any version of C++. That said, C++ is still mostly a superset of C adding Object-Oriented Programming, Exception Handling, Templating, and a more extensive standard library.
Below is a table of some of the more obvious and general differences between C and C++. There are many more subtle differences between the languages and between versions of the languages.
|C was developed by Dennis Ritchie between the year 1969 and 1973 at AT&T Bell Labs.||C++ was developed by Bjarne Stroustrup in 1979.|
|C does no support polymorphism, encapsulation, and inheritance which means that C does not support object oriented programming.||C++ supports polymorphism, encapsulation, and inheritance because it is an object oriented programming language.|
|C is (mostly) a subset of C++.||C++ is (mostly) a superset of C.|
|Number of keywords in C:|
* C90: 32
* C99: 37
* C11: 44
* C23: 59
|Number of keywords in C++:|
* C++98: 63
* C++11: 73
* C++17: 73
* C++20: 81
|For the development of code, C supports procedural programming.||C++ is known as hybrid language because C++ supports both procedural and object oriented programming paradigms.|
|Data and functions are separated in C because it is a procedural programming language.||Data and functions are encapsulated together in form of an object in C++.|
|C does not support information hiding.||Data is hidden by the Encapsulation to ensure that data structures and operators are used as intended.|
|Built-in data types is supported in C.||Built-in & user-defined data types is supported in C++.|
|C is a function driven language because C is a procedural programming language.||C++ is an object driven language because it is an object oriented programming.|
|Function and operator overloading is not supported in C.||Function and operator overloading is supported by C++.|
|C is a function-driven language.||C++ is an object-driven language|
|Functions in C are not defined inside structures.||Functions can be used inside a structure in C++.|
|Namespace features are not present inside the C.||Namespace is used by C++, which avoid name collisions.|
|Standard IO header is stdio.h.||Standard IO header is iostream.h.|
|Reference variables are not supported by C.||Reference variables are supported by C++.|
|Virtual and friend functions are not supported by C.||Virtual and friend functions are supported by C++.|
|C does not support inheritance.||C++ supports inheritance.|
|Instead of focusing on data, C focuses on method or process.||C++ focuses on data instead of focusing on method or procedure.|
|C provides malloc() and calloc() functions for dynamic memory allocation, and free() for memory de-allocation.||C++ provides new operator for memory allocation and delete operator for memory de-allocation.|
|Direct support for exception handling is not supported by C.||Exception handling is supported by C++.|
|scanf() and printf() functions are used for input/output in C.||cin and cout are used for input/output in C++.|
|C structures don’t have access modifiers.||C ++ structures have access modifiers.|
|C follows the top-down approach||C++ follows the Bottom-up approach|
|There is no strict type checking in C programming language.||Strict type checking in done in C++. So many programs that run well in C compiler will result in many warnings and errors under C++ compiler.|
|C does not support overloading||C++ does support overloading|
|Type punning with unions is allows (C99 and later)||Type punning with unions is undefined behavior (except in very specific circumstances)|
|Named initializers may appear out of order||Named initializers must match the data layout of the struct|
|Meta-programming: macros + _Generic()||Meta-programming: templates (macros are still supported bus discouraged)|
|There are 32 keywords in the C||There are 97 keywords in the C++|