В C++ классы могут взаимодействовать через различные отношения, такие как наследование, композиция, агрегация и ассоциация. Эти отношения помогают моделировать реальную объектно-ориентированную систему.
Наследование (Inheritance)
Один класс (производный) наследует свойства и поведение другого класса (базового). Подробнее см. Наследование.
Композиция (Composition)
Класс включает в себя объекты других классов, показывая жесткую зависимость “часть-целое”.
class Engine {
public:
    void start() {}
};
 
class Car {
private:
    Engine engine;
public:
    void drive() {
        engine.start();
    }
};Агрегация (Aggregation)
Класс содержит ссылки или указатели на объекты других классов, показывая слабую зависимость “часть-целое”.
class Engine {
public:
    void start() {}
};
 
class Car {
private:
    Engine* engine;
public:
    Car(Engine* eng) : engine(eng) {}
    void drive() {
        engine->start();
    }
};Ассоциация (Association)
Классы связаны через обычные ссылки или указатели, что означает, что они могут взаимодействовать друг с другом, но не имеют жесткой зависимости.
class Driver;
 
class Car {
public:
    void drive(Driver* driver) {}
};
 
class Driver {
public:
    void useCar(Car* car) {
        car->drive(this);
    }
};