Класс с одной стороны, отображает общие свойства и поведение однотипных объектов, с другой, является прототипом конкретного объекта определенного типа.
Класс объединяет элементы-данные и функции-элементы (компонентные данные и функции). Прототипом класса является структура.
Доступность компонентных данных и функций для программных объектов, внешних по отношению к классу, может быть различной и определяется разделом, где они описаны (объявлены).
Синтаксис описания класса имеет следующий вид:
class имя_класса{
private:
закрытые элементы
protected:
защищенные элементы
public:
открытые элементы
};
Под элементом в данном контексте понимается компонентное данное(данное-элемент) или компонентная функция(функция-элемент).
Закрытые элементы имеют наибольшую защиту от модификации. Доступ к ним для чтения и модификации разрешен только функциям-элементам данного класса и дружественным функциям. Доступ к ним из внешних функций и функций производных классов запрещен.
Защищенные элементы доступны функциям-элементам данного класса, производного от него класса и дружественным функциям.
Закрытые и защищенные элементы класса образуют реализацию класса.
Открытыеэлементы доступны в пределах всей программы и образуют интерфейс класса.
Пример:
class myclass
{ private: inta; //закрытый элемент
public: void set_a(int num){a = num;} //объявление открытых
int get_a(); //функций-элементов
};
Определение функций-элементов может осуществляться вне класса, но обязательно с указанием принадлежности к классу с помощью знака расширения области видимости «::».
Например:
int myclass::get_a() { returna; }
В качестве компонентных данных могут использоваться: переменные, массивы, структурные объекты, объекты объединения, указатели, объекты других классов.
В качестве компонентных выступают следующие типы функций:
1. Функции, реализующие поведение объектов (изменяющие значения компонентных данных);
2. Функции, обеспечивающие доступ к закрытым и защищенным компонентным данным (селекторы и модификаторы);
3. Специальные функции, предназначенные для создания и уничтожения объектов классов (конструкторы и деструкторы);
4. Специальные функции, предназначенные для копирования объектов классов (конструкторы копии);
5. Специальные функции operator() для перегрузки стандартных операций с целью использования их для выполнения операция над объектами класса.