§ 22. Тип данных класс (class)
22.1. Понятие класса
Язык программирования C++ предоставляет большое количество различных типов и структур данных (например: char, int, double, vector, list и т. д.), которых достаточно для решения относительно простых задач. Однако для решения более сложных проблем функционала этих типов может не хватать. В С++ есть возможность определять собственные типы данных, которые будут применяться для решения конкретной задачи. Вы уже создавали структуры, которые могут использоваться для создания собственных пользовательских типов данных. Структуры — это традиционный способ представления сложных типов данных, характерный для парадигмы структурного программирования. В объектно-ориентированном программировании[1] типы данных могут содержать не только данные, но и функции, которые могут работать с этими данными. Таким типом данных является класс. |
В языке C структуры могут только хранить данные и не могут иметь методов для их обработки. В C++, после проектирования классов (используя ключевое слово class), Бьёрн Страуструп размышлял о том, нужно ли, чтобы структуры (которые были унаследованы из языка С) имели связанные функции-члены. После некоторых размышлений он решил, что нужно. Поэтому сегодня структуры и классы в С++ имеют больше сходства, чем различий. Многие разработчики считают, что такое решение не было правильным, поскольку оно может привести к реальным проблемам (например, с выделением и очисткой памяти). Поэтому рекомендуется использовать ключевое слово struct для структур, применяемых только для хранения данных, и ключевое слово class для описания объектов, которые требуют объединения данных, и методов их обработки. |