← Назад ко всем вопросам

В чем разница между struct и const

1️⃣ Как кратко ответить

struct — это ключевое слово в C++, используемое для определения пользовательских типов данных, которые могут содержать как данные, так и функции. const — это квалификатор, который указывает, что значение переменной или объект не может быть изменено после инициализации. struct определяет структуру данных, а const ограничивает изменение данных.

2️⃣ Подробное объяснение темы

В C++ struct и const выполняют совершенно разные функции, и их использование не пересекается.

struct

struct — это ключевое слово, используемое для создания пользовательских типов данных, которые могут содержать несколько переменных (членов), возможно, разных типов. Это позволяет группировать связанные данные в одном объекте.

Пример использования struct:

struct Point {
    int x; // Координата x
    int y; // Координата y
};
​
int main() {
    Point p1; // Создание объекта типа Point
    p1.x = 10; // Присваивание значения члену x
    p1.y = 20; // Присваивание значения члену y
    return 0;
}
  • struct Point { ... }; — определяет новый тип данных Point, который содержит два целочисленных члена x и y.
  • Point p1; — создает переменную p1 типа Point.
  • p1.x = 10; и p1.y = 20; — присваивают значения членам структуры.

const

const — это квалификатор, который используется для объявления переменных или объектов, значения которых не могут быть изменены после инициализации. Это полезно для защиты данных от непреднамеренного изменения.

Пример использования const:

const int MAX_VALUE = 100; // Объявление константы
​
int main() {
    // MAX_VALUE = 200; // Ошибка: попытка изменить константу
    return 0;
}
  • const int MAX_VALUE = 100; — объявляет целочисленную константу MAX_VALUE со значением 100.
  • Попытка изменить MAX_VALUE приведет к ошибке компиляции, так как const запрещает изменение значения.

Совместное использование struct и const

const может быть использован внутри struct для объявления неизменяемых членов:

struct Point {
    const int x; // Константный член
    int y;
​
    Point(int xVal, int yVal) : x(xVal), y(yVal) {} // Конструктор для инициализации
};
​
int main() {
    Point p1(10, 20); // Создание объекта с инициализацией
    // p1.x = 30; // Ошибка: x является константным членом
    p1.y = 30; // Допустимо, так как y не является константным
    return 0;
}
  • const int x; — объявляет член x как константный, его значение устанавливается в конструкторе и не может быть изменено позже.
  • Point(int xVal, int yVal) : x(xVal), y(yVal) {} — конструктор, который инициализирует члены x и y.

Таким образом, struct и const служат для разных целей: struct используется для создания сложных типов данных, а const — для защиты данных от изменения.

Тема: C++ Язык (квалификаторы, cast, категории значений)
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки