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

Что такое класс?
A C++ класс объединяет данные и методы для управления данными в одно целое. Классы также определяют формы объектов. Данные и методы, содержащиеся в классе, называются членами класса. Класс — это определяемый пользователем тип данных. Для доступа к членам класса мы используем экземпляр класса. Вы можете рассматривать класс как образец объекта.
Класс может служить прототипом для дома. Он показывает расположение и размеры дверей, окон, полов и т. д. На основе этих описаний мы можем построить дом. Дом становится объектом. Из прототипа можно создать множество домов. Также из класса можно создать множество объектов.
На рисунке выше у нас есть прототип одного дома. На основе этого прототипа мы создали два дома с разными характеристиками.
Исходя из того, что класс рассматривается как шаблон, следующим шагом будет изучение того, как он объявляется в коде.
Объявление класса
In C++Класс определяется с помощью ключевого слова `class`. За ним должно следовать имя класса. Тело класса затем добавляется в фигурных скобках `{ }`.
Синтаксис
class class-name { // data // functions };
- имя класса — это название, которое нужно присвоить классу.
- данным Это данные для класса, обычно объявляемые как переменные.
- Функции являются функциями класса.
Естественно, объявление названия класса и состава его участников поднимает вопрос о том, кто может использовать каждого из них.
Частные и публичные ключевые слова
Вы наверняка встречали эти два ключевых слова. Это модификаторы доступа.
Частное:
Когда ключевое слово Private используется для определения функции или класса, оно становится закрытым. Такие доступны только изнутри класса.
Общественность:
С другой стороны, ключевое слово public делает данные/функции общедоступными. Они доступны снаружи класса.
После создания класса на его основе можно создавать объекты, подобно тому как переменные создаются на основе типа данных.
Определение объекта
Объекты создаются из классов. Объекты классов объявляются аналогично объявлению переменных. Имя класса должно стоять первым, за ним следует имя объекта. Объект имеет тип класса.
Синтаксис
class-name object-name;
- имя класса — это имя класса, из которого должен быть создан объект.
- имя-объекта — это имя, которое будет присвоено новому объекту.
Этот процесс создания объекта из класса известен как создание экземпляра.
После создания объекта к его открытым членам можно получить прямой доступ с помощью простого оператора.
Доступ к элементам данных
Для доступа к открытым членам класса мы используем оператор точки (.). Это члены, отмеченные модификатором общего доступа.
Пример 1
#include <iostream> using namespace std; class Phone { public: double cost; int slots; }; int main() { Phone Y6; Phone Y7; Y6.cost = 100.0; Y6.slots = 2; Y7.cost = 200.0; Y7.slots = 2; cout << "Cost of Huawei Y6 : " << Y6.cost << endl; cout << "Cost of Huawei Y7 : " << Y7.cost << endl; cout << "Number of card slots for Huawei Y6 : " << Y6.slots << endl; cout << "Number of card slots for Huawei Y7 : " << Y7.slots << endl; return 0; }
Выход:
Вот скриншот кода:
Code Объяснение:
- Включите заголовочный файл iostream в наш код, чтобы использовать его функции.
- Включение пространства имен std в наш код, чтобы использовать его классы без его вызова.
- Объявите класс с именем Phone.
- Используем модификатор публичного доступа, чтобы пометить переменные, которые мы собираемся создать, как общедоступные.
- Объявите переменную стоимость типа данных double.
- Объявите целочисленную переменную с именем slots.
- Конец тела класса.
- Вызов функции main(). Логика программы должна быть добавлена в ее тело.
- Создайте объект с именем Y6 типа Телефон. Это называется созданием экземпляра.
- Создайте объект с именем Y7 типа Телефон. Это называется созданием экземпляра.
- Получите доступ к стоимости переменной/члена класса Phone с помощью объекта Y6. Значение установлено на 100.0. Стоимость Y6 теперь установлена на уровне 100.0.
- Получите доступ к слотам переменных/членов класса Phone с помощью объекта Y6. Значение установлено на 2. Слоты для Y6 теперь установлены на 2.
- Получите доступ к стоимости переменной/члена класса Phone с помощью объекта Y7. Значение установлено на 200.0. Стоимость Y7 теперь установлена на уровне 200.0.
- Получите доступ к слотам переменных/членов класса Phone с помощью объекта Y7. Значение установлено на 2. Слоты для Y7 теперь установлены на 2.
- Напечатайте стоимость Y6 на консоли рядом с другим текстом.
- Напечатайте стоимость Y7 на консоли рядом с другим текстом.
- Напечатайте количество слотов для Y6 рядом с другим текстом.
- Напечатайте количество слотов для Y7 рядом с другим текстом.
- Программа должна вернуть значение после успешного завершения.
- Конец тела функции main().
Для публичных участников доступен внешний код, но для закрытых участников действуют гораздо более строгие правила доступа.
Что такое частный класс?
Доступ к членам класса, помеченным как частные, возможен только для функций, определенных внутри класса. Любой объект или функция, определенные вне класса, не могут напрямую обращаться к таким членам. Доступ к частному члену класса возможен только для функций-членов и друзей.
Пример 2
#include <iostream> using namespace std; class ClassA { public: void set_a(int val); int get_a(void); private: int a; }; int ClassA::get_a(void) { return a; } void ClassA::set_a(int val) { a = val; } int main() { ClassA a; a.set_a(20); cout << "Value of a is: " << a.get_a(); return 0; }
Выход:
Вот скриншот кода:
Code Объяснение:
- Включите заголовочный файл iostream в наш код, чтобы использовать его функции.
- Включите пространство имен std в наш код, чтобы использовать его классы, не вызывая его.
- Создайте класс с именем ClassA.
- Используйте модификатор публичного доступа, чтобы пометить создаваемый член класса как общедоступный.
- Создайте функцию с именем set_a(), которая принимает одно целочисленное значение val.
- Создайте функцию с именем get_a().
- Используйте модификатор частного доступа, чтобы пометить создаваемый член класса как доступный для частного доступа.
- Объявите целочисленную переменную с именем a.
- Конец тела класса.
- Используйте имя класса и оператор разрешения области для доступа к функции get_a(). Мы хотим определить, что делает функция при вызове.
- Функция get_a() должна возвращать значение переменной a при вызове.
- Конец определения функции get_a().
- Используйте имя класса и оператор разрешения области для доступа к функции set_a(). Мы хотим определить, что делает функция при вызове.
- Присвоение значения переменной val переменной a.
- Конец определения функции set_a().
- Вызовите функцию main(). Логику программы следует добавить в тело этой функции.
- Создайте экземпляр ClassA и присвойте ему имя a.
- Используйте приведенный выше экземпляр класса и функцию set_a(), чтобы присвоить значение 20 переменной a.
- Печать текста рядом со значением переменной a на консоли. Значение переменной a получается путем вызова функции get_a().
- Программа должна вернуть значение после успешного завершения.
- Конец тела функции main().
Защищаемые члены семьи занимают промежуточное положение между частным и общественным секторами, что добавляет еще одну ключевую возможность в процессе наследования.
Что такое защищенный класс?
Члены класса, отмеченные как защищенные, имеют преимущество перед теми, которые отмечены как частные. Доступ к ним можно получить с помощью функций внутри класса, в котором они определены. Кроме того, к ним можно получить доступ из производных классов.
Пример 3
#include <iostream> using namespace std; class ParentClass { protected: int value; }; class ChildClass : public ParentClass { public: void setId(int x) { value = x; } void displayValue() { cout << "Value is: " << value << endl; } }; int main() { ChildClass c; c.setId(21); c.displayValue(); return 0; }
Выход:
Вот скриншот кода:
Code Объяснение:
- Включите заголовочный файл iostream в наш код, чтобы использовать его функции.
- Включите пространство имен std в наш код, чтобы использовать его классы, не вызывая его.
- Создайте класс с именем ParentClass.
- Используйте модификатор доступа protected, чтобы пометить создаваемый член класса как защищенный.
- Создайте целочисленную переменную с именем value.
- Конец тела класса.
- Создайте новый класс с именем ChildClass, который наследует ParentClass.
- Используйте модификатор доступа protected, чтобы пометить создаваемый член класса как доступный для дочерних классов.
- Создайте функцию с именем setId(), которая принимает одно целое значение x.
- Присвоение значения переменной x значению переменной.
- Конец определения функции setId().
- Создайте функцию с именем displayValue().
- Выведите значение переменной с именем value на консоли вместе с другим текстом.
- Конец тела функции displayValue().
- Конец тела класса с именем ChildClass.
- Вызовите функцию main(). Логику программы следует добавить в тело этой функции.
- Создайте экземпляр ChildClass и дайте ему имя c.
- Используйте приведенный выше экземпляр класса и функцию setId(), чтобы присвоить значение 21 переменной x.
- Используйте приведенный выше экземпляр класса для вызова функции с именем displayValue().
- Программа должна вернуть значение после успешного завершения.
- Конец тела функции main().
Помимо хранения данных, класс также объединяет функции, которые работают с этими данными.
Функции-члены класса
Функции помогают нам манипулировать данными. Функции-члены класса можно определить двумя способами:
- Внутри определения класса
- За пределами определения класса
Если функция должна быть определена вне определения класса, мы должны использовать оператор разрешения области (::). Это должно сопровождаться именами классов и функций.
Пример 4
#include <iostream> #include <string> using namespace std; class Guru99 { public: string tutorial_name; int id; void printname(); void printid() { cout << "Tutorial id is: "<< id; } }; void Guru99::printname() { cout << "Tutorial name is: " << tutorial_name; } int main() { Guru99 guru99; guru99.tutorial_name = "C++"; guru99.id = 1001; guru99.printname(); cout << endl; guru99.printid(); return 0; }
Выход:
Вот скриншот кода:
Code Объяснение:
- Включите заголовочный файл iostream в нашу программу, чтобы использовать его функции.
- Включите файл заголовка строки в нашу программу, чтобы использовать ее функции.
- Включите пространство имен std в наш код, чтобы использовать его классы, не вызывая его.
- Создайте класс с именем Guru99.
- Используйте модификатор доступа "public" для того, чтобы пометить создаваемые нами члены класса как общедоступные.
- Создайте строковую переменную с именем Tutorial_name.
- Создайте целочисленную переменную с именем id.
- Создайте функцию с именем printname(). Эта функция не определена в определении класса.
- Создайте функцию с именем printid(). Эта функция определена внутри определения класса. Ее тело добавлено внутри определения класса.
- Распечатайте значение идентификатора переменной вместе с другим текстом на консоли. Обратите внимание, что это было добавлено в тело функции printid(). Он будет выполнен только при вызове функции printid().
- Конец тела функции printid().
- Конец основной части урока Guru99.
- Начало определения функции printname().
- Напечатайте значение переменной имя_учебника на консоли вместе с другим текстом. Обратите внимание, что это было добавлено в тело функции printname(). Он будет выполнен только при вызове функции printname().
- Конец определения функции printname().
- Вызовите функцию main(). Логику программы следует добавить в тело этой функции.
- Создайте экземпляр класса. Guru99 и дал ему название guru99.
- Используйте приведенный выше экземпляр, чтобы присвоить значение C++ в переменную имя_учебника.
- Используйте экземпляр guru99, чтобы присвоить значение 1001 переменной id.
- Используйте экземпляр guru99 для вызова функции printname() .
- Вызовите команду end (конечная строка), чтобы вывести на консоль новую пустую строку.
- Используйте экземпляр guru99 для вызова функции printid().
- Программа должна вернуть значение после успешного завершения.
- Конец тела функции main().
Две специальные функции-члена класса автоматически выполняются при создании и при уничтожении объекта.
Конструкторы и деструкторы
Что такое Конструктор?
Конструкторы — это специальные функции, которые инициализируют объекты. C++ компиляторы Конструктор вызывается при создании объекта. Конструкторы помогают присваивать значения членам класса. Конечно, это происходит после того, как им выделено некоторое пространство в памяти.
Что такое деструктор?
С другой стороны, деструкторы помогают уничтожать объекты классов.
Имя конструктора должно быть похоже на имя класса. Конструкторы не имеют возвращаемого типа.
Конструктор может быть определен внутри или вне тела класса. Если он определен вне тела класса, он должен быть определен с помощью имени класса и оператора разрешения области (::).
Пример 5
#include <iostream> using namespace std; class ClassA { public: ClassA() { cout << "Class constructor called"<<endl; } ~ClassA() { cout << "Class destructor called"<<endl; } }; int main() { ClassA a; int p = 1; if (p) { ClassA b; } }
Выход:
Вот скриншот кода:
Code Объяснение:
- Включите заголовочный файл iostream в код, чтобы использовать его функции.
- Включите пространство имен std в наш код, чтобы использовать его классы, не вызывая его.
- Создайте класс с именем ClassA.
- Используйте модификатор публичного доступа, чтобы пометить участника, которого мы собираемся создать, как общедоступного.
- Создайте конструктор для класса.
- Текст, выводимый на консоль при вызове конструктора. Конец - это C++ ключевое слово, которое означает конечную строку. Он перемещает курсор мыши на следующую строку.
- Конец тела конструктора класса.
- Создайте деструктор класса.
- Текст, выводимый на консоль при вызове деструктора. Конец - это C++ ключевое слово, которое означает конечную строку. Он перемещает курсор мыши на следующую строку.
- Конец тела деструктора.
- Конец тела класса.
- Вызовите функцию main(). Логику программы следует добавить в тело этой функции.
- Создайте объект класса и дайте ему имя a. Будет вызван конструктор.
- Создайте целочисленную переменную с именем p и присвойте ей значение 1.
- Создайте блок операторов if, используя переменную p.
- Создайте объект класса и дайте ему имя b. Будет вызван деструктор.
- Конец тела оператора if.
- Конец тела функции main().








