File tree 2 files changed +108
-0
lines changed
2 files changed +108
-0
lines changed Original file line number Diff line number Diff line change
1
+ #pragma once
2
+
3
+ #include < iostream>
4
+
5
+ namespace classwork {
6
+
7
+ struct Student {
8
+ public:
9
+ // конструктор по-умолчанию (без аргументов)
10
+ Student () {
11
+ id_ = 0 ;
12
+ age_ = 0 ;
13
+
14
+ // выделили память в куче (не забыть высвободить)
15
+ pointer_ = new int {0 };
16
+
17
+ std::cout << " Student()\n " ;
18
+ }
19
+
20
+ // "объявление" конструктора от 2 аргументов
21
+ Student (int id, int age);
22
+
23
+ // деструктор
24
+ ~Student () {
25
+ delete pointer_;
26
+ pointer_ = nullptr ;
27
+
28
+ std::cout << " ~Student()\n " ;
29
+ }
30
+
31
+ // getter - метод, который возвращает копию значения поля id
32
+ int id () const {
33
+ return id_;
34
+ }
35
+
36
+ // setter - метод, который изменяет значение поля id
37
+ void SetId (int new_id) {
38
+ private_function (); // вызов приватной функции возможен внутри структуры
39
+ id_ = new_id;
40
+ }
41
+
42
+ private:
43
+ // приватные переменные принято называть с суффиксом _
44
+ int id_;
45
+ int age_;
46
+
47
+ int * pointer_;
48
+
49
+ // приватные методы
50
+ void private_function () {
51
+ std::cout << " Student::private_function()\n " ;
52
+ }
53
+ };
54
+
55
+ } // namespace classwork
Original file line number Diff line number Diff line change
1
+ #include < iostream>
2
+
3
+ // Подключаем свой заголовочный файл (он находится в папке include).
4
+ #include " 15_structures.hpp"
5
+
6
+ // Заголовочные файлы хранят в себе функции, структуры и т.д., которые можно использовать.
7
+
8
+ using namespace classwork ; // чтобы постоянно не дописывать в названиях 'classwork::'
9
+
10
+ int main () {
11
+
12
+ {
13
+ // 1. Создание объекта структуры на стеке.
14
+
15
+ Student student; // вызывается конструктор по-умолчанию
16
+
17
+ // вызов метода через оператор . (точка)
18
+ student.SetId (1 );
19
+
20
+ std::cout << " Id: " << student.id () << " \n " ;
21
+ }
22
+
23
+ std::cout << std::endl;
24
+
25
+ {
26
+ // 2. Создание объекта структуры на куче.
27
+
28
+ // выделяем участок памяти при помощи оператора new
29
+ auto * student_heap = new Student (1 , 19 );
30
+
31
+ // Пояснение: auto - ключевое слово, которое позволяет не писать тип данных слева от знака равно.
32
+
33
+ // вызов метода через оператор -> (стрелка)
34
+ student_heap->SetId (2 );
35
+
36
+ // Пояснение: оператор -> используется для указателей.
37
+
38
+ std::cout << " Id: " << student_heap->id () << ' \n ' ;
39
+
40
+ delete student_heap; // высвобождаем участок памяти
41
+ }
42
+
43
+ return 0 ;
44
+ }
45
+
46
+ // "определение" конструктора от 2 аргументов из файла 15_structures.hpp
47
+ classwork::Student::Student (int id, int age) {
48
+ id_ = id;
49
+ age_ = age;
50
+ pointer_ = nullptr ;
51
+
52
+ std::cout << " Student(id, age)\n " ;
53
+ }
You can’t perform that action at this time.
0 commit comments