В чем разница между классом и структурой в C++?

«В чем разница между классом и структурой в C++?» — вопрос из категории C++ Core, который задают на 38% собеседований C/C++ Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В C++ разница между class и struct минимальна и сводится к умолчанию уровня доступа и умолчанию наследования:

  1. Уровень доступа по умолчанию:

    • В struct все члены и методы по умолчанию public.
    • В class все члены и методы по умолчанию private.
  2. Наследование по умолчанию:

    • При наследовании struct D : Base — наследование по умолчанию public.
    • При наследовании class D : Base — наследование по умолчанию private.

Пример, демонстрирующий разницу:

struct MyStruct {    // public по умолчанию
    int data;        // public
    void func() {}   // public
};

class MyClass {      // private по умолчанию
    int data;        // private
    void func() {}   // private
};

// Наследование
struct D1 : MyClass {}; // Наследование public MyClass (т.к. struct)
class  D2 : MyClass {}; // Наследование private MyClass (т.к. class)

Практическое соглашение: struct традиционно используют для простых агрегатов данных (POD-типы, данные без сложной логики), а class — для полноценных объектов с инкапсуляцией и поведением. Однако с точки зрения языка их возможности (конструкторы, деструкторы, методы, наследование, полиморфизм) идентичны.

Видео-ответы