ООП на С/C++

Оператор *this

this является указателем внутри объекта на сам объект.

Он нужен, чтобы, например, зарегистировать один обьект у другого объекта.

Вспомогательная цель: различать поля и локальные переменные.

Наследование

public наследование - в классе-наследнике доступны все свойства класса-предка кроме private, и они также доступны извне.

private - класс-наследник наследует свойства и методы "только для себя".

protected - класс-наследник наследует свойства и передают их своим наследникам.

Полиморфизм

Создадим три класса: A, B и C - которые будут выводит экземпляр какого класса вызван.

Ключевое слово virtual объявляет метод виртуальным.

#include <iostream>

using namespace std;

class A {
public:
  // virtual // Раскомментируйте эту строку
  void show(){
    cout << "show A" << endl;
  };
};

class B : public A {
  void show(){
    cout << "show B" << endl;
  };
};

class C : public B {
  void show(){
    cout << "show C" << endl;
  };
};

class D : public B, public C {
  void show(){
    cout << "show D" << endl;
  };
};

int main(){
  A* a[3];
  // Заводим всех типов
  a[0] = new A();
  a[1] = new B();
  a[2] = new C();
  for(int i=0; i<3; i++)
    a[i]->show();
  // Отчистка памяти  
    
}