Seminar on C++ Programming for C Programmers

In this C++ course, an introduction to object-oriented programming is given and it is confronted with procedural programming using C. The similarities and differences between the C language and the C++ language are a main subject of the course. Since C++ is based on the memory model of C and since the use of compilers and linkers is essentially the same, we build upon the existing prior knowledge of C developers to address the language structures of ISO C++. ISO C++ is a programming language that enables complex software designs and combines them with the runtime efficiency of C. The language structures are on the one hand expressive but on the other hand hard to learn, since the several changes of the past years have strongly modified the language. While at the beginning of the 1990s the core of the language was still represented by their object-oriented properties, it is now the concepts of generative programming that equally stand beside the OO language constructs. In the course you also get an overview on this evolution and the backgrounds of said techniques are addressed. This seminar primarily deals with the principles of the object-oriented programming with ISO C++. For this course, the knowledge of the C programming language is required.

The following subject matters are covered:

  • Historical Evolution of C++
  • Basic Syntax
  • Comparison between C and C++
  • The parts of the C language in C++
  • Function Overloading
  • Operator Overloading
  • Operators
  • Type Converting
  • Pointers and References
  • Class Concept
  • Data Encapsulation
  • Attributes and Methods
  • Visibility Concept
  • Function Overloading
  • Operator Overloading
  • The C++ Name Mangling
  • Type Converting
  • Constructors and Destructors
  • Object Instantiation
  • Dynamic Memory Allocation
  • malloc() and free() versus new and delete
  • Inheritance
  • Virtual Methods
  • Abstract Classes
  • Polymorphism
  • Multiple Inheritance
  • Exception Handling
  • Templates
  • Function Templates
  • Class Templates
  • Object-Oriented Programming
  • Comparison of C and C++ Languages
  • Principles of OO Modeling
  • Sense and Nonsense of Class Hierarchies
  • Discussing the Abstract Level of OOP
  • Fields of Application of C++
  • Considerations on Runtime Behaviors
  • Language Standard and Compiler Behavior
  • Structure of C++ Projects
  • …and more

The programming language is learned by means of practical examples. Any C++ compiler can be adopted for this purpose. GNU C++ or MS Visual C++ are preferably used. The compiler should not be too old and should support the essential language properties of ANSI/ISO C++ relating to namespaces and name conventions. It is certainly important to use of a platform that the participants know well - preferably Windows, Mac OS X or Linux. Naturally, any UNIX-System can be used as development and exercise platform for the training.

Last modified 04.01.2023