C++ Классы и объекты

C++ добавляет объектно-ориентированное программирование на основе C. C++ поддерживает объектно-ориентированное программирование. Классы — это ключевая особенность C++, и их часто называют определяемыми пользователем типами.

Классы используются для задания формы объектов. Это определяемые пользователем типы данных, которые инкапсулируют комбинацию данных и функций. Данные в классе называются переменными-членами, а функции — функциями-членами. Класс можно рассматривать как шаблон, который можно использовать для создания нескольких объектов с одинаковыми свойствами и поведением.

Определение класса в C++

Чтобы определить класс, нужно использовать ключевое словоclassЗатем укажите имя класса, а тело класса заключается в пару фигурных скобок. Тело содержит переменные-члены и функции-члены класса.

Определение класса — это по сути определение схемы для типа данных. Оно определяет, что включают объекты класса и какие операции можно выполнять с этим объектом.

В следующем примере мы используем ключевое словоclassдля определения типа данных Box, содержащего три переменные-члены: length, breadth и height:

class Box { public: double length; // Длина коробки double breadth; // Ширина коробки double height; // Высота коробки };

Ключевые словаpublicЭто определяет атрибуты доступа членов класса. В области видимости объекта класса public-члены доступны извне класса. Вы также можете указать члены класса как...privateилиprotected, что мы объясним позже.

Определение объектов C++

Классы предоставляют шаблон для объектов, так что по сути объекты создаются на основе классов. Объявление объекта класса подобно объявлению переменной базового типа. Следующие операторы объявляют два объекта класса Box:

Box Box1; // Объявить Box1 типа Box Box Box2; // Объявить Box2 типа Box

Объекты Box1 и Box2 имеют каждый свои собственные члены данных.

доступ к членам данных

К открытым членам данных объекта класса можно получить доступ с помощью оператора прямого доступа к членам..для доступа.

Чтобы лучше понять эти концепции, давайте попробуем следующий пример:

Пример

#include <iostream> using namespace std; class Box { public: double length; // Длина double breadth; // Ширина double height; // Высота // Объявление функции-члена double get(void); void set( double len, double bre, double hei ); }; // Определение функции-члена double Box::get(void) { return length * breadth * height; } void Box::set( double len, double bre, double hei) { length = len; breadth = bre; height = hei; } int main( ) { Box Box1; // Объявить Box1 типа Box Box Box2; // Объявить Box2 типа Box Box Box3; // Объявить Box3 типа Box double volume = 0.0; // Используется для хранения объема // Детали Box 1 Box1.height = 5.0; Box1.length = 6.0; Box1.breadth = 7.0; // Детали Box 2 Box2.height = 10.0; Box2.length = 12.0; Box2.breadth = 13.0; // Объём Box 1 volume = Box1.height * Box1.length * Box1.breadth; cout << "Объём Box1:" << volume <<endl; // Объём Box 2 volume = Box2.height * Box2.length * Box2.breadth; cout << "Объём Box2:" << volume <<endl; // Детали Box 3 Box3.set(16.0, 8.0, 12.0); volume = Box3.get(); Box3 << "Объем коробки:" << volume <<endl; return 0; }

Когда приведенный выше код скомпилирован и выполнен, он выдает следующие результаты:

Box1 的体积:210
Box2 的体积:1560
Box3 的体积:1536

Следует отметить, что к private и protected членам нельзя получить доступ с помощью оператора прямого доступа к членам (.). Мы научимся получать доступ к private и protected членам в последующих руководствах.

Подробности о классах и объектах

Итак, мы получили базовое представление о классах и объектах C++. Ниже также приведены некоторые другие концепции, связанные с классами и объектами C++, и вы можете перейти по соответствующим ссылкам, чтобы узнать больше.

КонцепцииОписание
Функции-члены классаФункции-члены класса — это те, определения и прототипы которых записаны внутри определения класса, как и другие переменные в классе.
Модификаторы доступа классаЧлены класса могут быть определены как public, private или protected. По умолчанию они определяются как private.
Конструкторы и деструкторыКонструктор класса — это специальная функция, которая вызывается при создании нового объекта. Деструктор класса — это также специальная функция, которая вызывается при удалении созданного объекта.
Конструктор копирования C++Конструктор копирования — это специальный конструктор, который при создании объекта использует ранее созданный объект того же класса для инициализации вновь создаваемого объекта.
Дружественные функции C++Дружественные функцииМогут получать доступ к закрытым и защищённым членам класса.
Встраиваемые функции C++При использовании встраиваемых функций компилятор пытается развернуть код в теле функции в том месте, где вызывается функция.
Указатель this в C++У каждого объекта есть специальный указательthis, который указывает на сам объект.
Указатель на класс в C++Указатели на классы используются так же, как указатели на структуры. Фактически класс можно рассматривать как структуру с функциями.
Статические члены класса в C++Как члены данных, так и функции-члены класса могут быть объявлены статическими.
Другие расширения