C++ Basic Concepts from Teach Yourself C++ by Schildt and C++ Pocket Reference by Kyle Loudon: -Classes are types that group data and functionality together into encapsulated units. The default access level for their members is private. Structures and unions are similar to classes except that the default access level for their members is public. -Classes contain data members and member functions (private, public or protected). -Objects are specific instances of a class. -this pointer: all member functions not declared using de keyword static have a special pointer called this, that points to the instatianing object. -Constructors are special member functions used to initialize instances of a class. -Destructors are special member functions invoked when an instance of a class is about to be destroyed. -Friends of classes are granted access to all members of the class. You can define functions or entire classes as friends of a class. -Inheritance: You derive a class from another, and the derived class inherits the data members and member functions that the other class or classes define. It is fundamental to supporting polymorphism. -Multiple inheritance: You derive a class from several base classes at once. -Virtual base classes (nothing to do with Abstract base classes): Remedies the situation in multiple inheritance whereby multiple instances of a base class are included in objects of a derived class. -Virtual member functions: To give a member function (through a pointer to derived classes) from a base class new behavior in a derived class you override it. To determine which member function to call, C++ users polymorphism or dynamic binding (at runtime). -Polymorphic classes are classes which contain at least one virtual member function. -Pure virtual member functions have no definition in the base class (=0). -Abstract base classes contain one or more pure virtual member functions. -Functions and Operators overloading: Allow you to provide more than one definition for a function within the same scope. It also lets you define additional behaviors for most (not all) operators. Static binding (at compile time). -new, new[], delete, delete[] are C++ intrinsic support for allocating and reclaiming memory dynamically as program runs (similar to malloc and free). -Templates are blueprints from which versions of a class or functions are generated automatically by the compiler based on a set of parameters. -Exception handling is performed by using try, catch blocks and throw. -Static data members are shared by all instances of a class. The main reason for the use of static data members in C++ is to prevent the use of global variables. This enforce encapsulation paradigm in OOP.