Programming C++  «Prev  Next»
Lesson 4Similarities in C and C++ program structure
ObjectiveExamine similarities between C/C++ program Structure.

Similarities between C and C++ Programs

C++ supports Object-oriented programming and C does not

One of the most commonly known differences between the two programming languages is that C++ supports OOP and C does not. C was originally built to be a procedural programming language and it is not practical to implement (OOP) object-oriented programming in C.
C++ supports multiple programming paradigms and multiple inheritance and OOP is one of the programming paradigms. For example, C++'s parameterized templates allow for generic programming.
C++ has a few characteristics of functional programming (in the form of function pointers). Furthermore, you can assume that any C++ feature relating to classes does not exist in C, including concepts like
  1. friends and
  2. virtual functions.
One can summarize the differences between the languages through the following statement:

C++ has better support for multiple programming paradigms when compared to C.

C++ is a superset of C and any C++ feature relating to classes does not exist in C.

C/C++ Compatibility

With minor exceptions, C++ is a superset of C and most differences stem from the fact that C++ has greater emphasis on type checking.
Well-written C programs tend to be C++ programs as well and a compiler can diagnose every difference between C++ and C. Most C code is Classic C or C99.

C and C++ Are Siblings

Classic C has two main descendants:
  1. ISO C and
  2. ISO C++.
Over the years, these languages have evolved at different paces and in different directions. One result of this is that each language provides support for traditional C-style programming in slightly different ways. The resulting incompatibilities can make life challenging for people who use both C and C++:
  1. For people who write in one language using libraries implemented in the other,
  2. and for implementers of libraries and tools for C and C++.

As you have seen in the last several lessons, the organization of a C++ program is very similar to the organization of a C program.
  1. C++ relies on an external standard library to provide input/output. The information the program needs to use this library resides in the library file iostream.h.
  2. C++ uses a preprocessor to handle a set of directives, such as the include directive, to convert the program from its preprocessing form to pure C++ syntax. These directives are introduced by the symbol #.
  3. The function main() is used as the starting point for execution of the program. It obeys the C++ rules for function declaration. The function main() implicitly returns zero, indicating normal termination. Other return values would indicate an error condition.

What are the major differences between C++ 14 and C++ 17?

C++ is a popular programming language that is widely used for developing high-performance applications. The latest versions of C++ are C++14 and C++17, which introduced several new features and improvements over previous versions of the language. Here are some of the major differences between C++14 and C++17:
  1. Structured Bindings: C++17 introduced the ability to create structured bindings, which allow multiple variables to be bound to the components of a structured type such as a tuple or a struct. This feature makes it easier to work with structured data types and can simplify code.
  2. constexpr if: C++17 introduced the ability to use if statements in constexpr contexts, which allows for more flexible and expressive compile-time computations. This feature makes it easier to write complex code that can be evaluated at compile-time, improving performance and reducing code complexity.
  3. Inline variables: C++17 introduced the ability to define variables as inline, which can improve performance by reducing the overhead of function calls. This feature also simplifies code and can make it easier to work with certain data structures.
  4. UTF-8 character literals: C++17 introduced support for UTF-8 character literals, making it easier to work with Unicode characters and improving internationalization support.
  5. Fold expressions: C++17 introduced the ability to use fold expressions, which allow variadic templates to be expanded into a single expression. This feature simplifies code and can improve performance in some cases.
  6. std::byte: C++17 introduced a new type called std::byte, which provides a standard way to represent byte values in C++. This feature can improve portability and make it easier to work with low-level data.

These are just a few of the major differences between C++14 and C++17. Overall, C++17 introduced several new features and improvements that make the language more powerful, expressive, and efficient, and it's widely used by developers and organizations for high-performance and demanding applications.