Кратко

  • Данные-члены: Переменные внутри класса.
  • Функции-члены: Методы внутри класса.
  • Инициализация полей: Через конструкторы и списки инициализации.
  • Встраивание: Определение функций внутри класса.
  • Специальные функции-члены: Конструктор по умолчанию, конструктор копирования, оператор присваивания, деструктор.

Подробнее

Данные-члены (переменные-члены)

Переменные, которые хранят данные, специфичные для объекта класса.

class MyClass {
public:
    int data; // Переменная-член
};

Функции-члены (методы)

Функции-члены выполняют операции над данными-членами класса.

class MyClass {
public:
    void myFunction() { // Функция-член
        // Код функции
    }
};

Инициализация полей класса

Производится через конструкторы и списки инициализации, см. Конструкторы. Также см. Битовые поля.

Встраивание (Inline функции)

Функции-члены могут быть определены внутри класса, что делает их автоматически inline.

class MyClass {
public:
    int data;
 
    // Inline функция
    void setData(int d) {
        data = d;
    }
};

Специальные функции-члены класса

  1. Конструктор по умолчанию, конструктор копирования - см. Конструкторы

  2. Оператор присваивания - Оператор для копирования значений одного объекта в другой.

    class MyClass {
    public:
        int data;
        MyClass& operator=(const MyClass &other) {
            if (this != &other) {
                data = other.data;
            }
            return *this;
        }
    };
  3. Деструктор - Вызывается при уничтожении объекта для освобождения ресурсов.

    class MyClass {
    public:
        ~MyClass() {
            // Освобождение ресурсов
        }
    };

Пример

class MyClass {
public:
    int data;
 
    // Конструктор по умолчанию
    MyClass() : data(0) {}
 
    // Конструктор с параметром
    MyClass(int d) : data(d) {}
 
    // Конструктор копирования
    MyClass(const MyClass &other) : data(other.data) {}
 
    // Оператор присваивания
    MyClass& operator=(const MyClass &other) {
        if (this != &other) {
            data = other.data;
        }
        return *this;
    }
 
    // Деструктор
    ~MyClass() {
        // Освобождение ресурсов
    }
 
    // Inline функция
    void setData(int d) {
        data = d;
    }
};