
#19 – Создание классов и объектов
Видеоурок
Создание классов
Для создания класса необходимо прописать ключевое слово class
и далее название для класса. Общепринято начинать названия классов с буквы в верхнем регистре, но если этого не сделать, то ошибки не будет.
В любом классе можно создавать поля (переменные), методы (функции), а также конструкторы.
Создав новый класс и поместив туда какую-либо информацию мы можем создавать на основе него новые объекты. Объекты будут иметь доступ ко всем характеристикам класса, которые отмечены модификатором public
.
Существует три модификатора доступа:
public
- данные будут видны повсюду, как в классе, так и вне его;protected
- данные будут видны только в классе, где они были созданы, а также в классах наследниках;private
- данные будут видны только в классе, где они были созданы.
Пример простого класса приведен ниже:
class Book {
public:
int pages;
char name;
float weight;
void getInfoBook () {
cout << "В книге " << name << " находиться " << pages << " страниц. " << endl;
cout << "При этом она весит " << weight << endl;
}
};
На основе такого класса мы можем создать множество объектов. Каждый объект в данном случае будет представлять из себя конкретную книжку. Для каждого объекта мы можем указать уникальные данные: количество страниц, название книги и её вес.
Чтобы создать объект нам потребуется следующий код:
Book sherlock_holms; // Создание объекта
sherlock_holms.getInfoBook(); // Вызов метода класса
Такой код можно прописать и в одной строке кода. Мы для наглядности разбили код в две строки.
Чтобы брать данные из класса через объект необходимо ставить точку и указывать имя переменной или функции, которую мы хотим взять.
Исходный код
#include <iostream>
#include <string>
using namespace std;
class Building {
private:
int year;
string type;
public:
void set_data(int y, string t) {
year = y;
type = t;
}
void get_info() {
cout << "Type: " << type << ". Year: " << year << endl;
}
};
int main() {
setlocale(LC_ALL, "RU");
Building school;
//school.type = "Школа";
//school.year = 2000;
school.set_data(2000, "Школа");
school.get_info();
Building house;
//house.type = "Дом";
//house.year = 2010;
house.set_data(2010, "Дом");
house.get_info();
return 0;
}
Задание к уроку
Необходимо оформить подписку на проект, чтобы получить доступ ко всем домашним заданиям
Большое задание по курсу
Вам необходимо оформить подписку на сайте, чтобы иметь доступ ко всем большим заданиям. В задание входит методика решения, а также готовый проект с ответом к заданию.
PS: подобные задания доступны при подписке от 1 месяца
Также стоит посмотреть