Website Summary Files Commits Branches @commit @diff @stats
diff options
context:
space:
mode:
Commit8436169710fca49323771f429abe9822416acb5d (patch)
Author
 Angel Dimitriev <angel_dimitriev@abv.bg>
2022-03-15 19:41:17 +0200
Committer
 GitHub <noreply@github.com>
2022-03-15 19:41:17 +0200
Files39c80bedbec057db4b85d6d8853ce9e39ec6e645
Object-oriented_programming_FMI-8436169710fca49323771f429abe9822416acb5d.tar
Object-oriented_programming_FMI-8436169710fca49323771f429abe9822416acb5d.tar.gz
Object-oriented_programming_FMI-8436169710fca49323771f429abe9822416acb5d.zip
Parent9872d13ccbb62e20bdaa1d5d01f63db79efa041f (diff)
Update README.md
1 files changed, 127 insertions, 1 deletions
-rw-r--r--Sem. 04/README.md128
diff --git a/Sem. 04/README.md b/Sem. 04/README.md
index 1784810..01d148c 100644
--- a/Sem. 04/README.md
+++ b/Sem. 04/README.md
@@ -1 +1,127 @@
-D
+# Член-функции. Конструктори и деструктор. Модификатори за достъп. Капсулация.
+
+## Член-функции.
+Член-функциите са функции, които работят с член-данните на обекта от дадена структура.
+ ```c++
+struct Point
+{
+ int x;
+ int y;
+};
+bool isInFirstQuadrant(const Point& p)
+{
+ return p.x >= 0 && p.y >= 0;
+}
+
+void revert(Point& p)
+{
+ p.x = -p.x;
+ p.y = -p.y;
+}
+
+int main()
+{
+ Point p1 = {3, 4};
+ Point p2 = {-9, 8};
+ cout << isInFirstQuadrant(p1) << endl;
+ cout << isInFirstQuadrant(p2) << endl;
+}
+ ```
+
+ Може функцията да бъде член-функция:
+ ```c++
+struct Point
+{
+
+ int x;
+ int y
+
+ bool isInFirstQuadrant() const
+ {
+ return x >= 0 && y >= 0;
+ }
+
+ void revert()
+ {
+ x = -x;
+ y = -y;
+ }
+};
+
+int main()
+{
+ Point p1 = {3, 4};
+ Point p2 = {-9, 8};
+ cout << p1.isInFirstQuadrant() << endl;
+ cout << p2.isInFirstQuadrant() << endl;
+}
+ ```
+#
+**Член-функциите**:
+
+ - Работят с член-данните на класа.
+ - Извикват се с обект на класа
+
+ - Компилаторът преобразува всяка **член-функция** на дадена структура в
+ обикновена функция с уникално име и един допълнителен параметър
+ –**указател към обекта**.
+
+**Константни член-функции**:
+
+ - Не променят член-данните на структурата.
+ - Оказва се чрез записването на ключовата дума **const** в декларацията и в края на заглавието в дефиницията им
+ - Могат да се извикват от константни обекти.
+## Конструктори и деструктор.
+
+**Жизнен цикъл на обект**:
+ - Създаване на обект в даден scope – заделя се памет и член-данните се инициализират.
+ - Достига се до края на скоупа(област).
+ - Обектът и паметта, която е асоциирана с него се разрушава.
+
+**Конструктор**:
+ - Извиква се веднъж - при създаването на обекта.
+ - Не се оказва експлицитно тип на връщане (връща констатна референция).
+ - Има същото име като класа.
+
+ **Деструктор**:
+ - Извиква се веднъж - при изтриването на обекта.
+ - Не се оказва експлицитно тип на връщане.
+ - Има същото име като класа със симовла '~' в началото.
+
+ ```c++
+
+#include <iostream>
+
+using namespace std;
+
+
+struct Test
+{
+ Test()
+ {
+ cout << "Object is created" <<endl;
+ }
+
+ ~Test()
+ {
+ cout << "Object is destroyed" <<endl;
+ }
+ int a;
+ int b;
+};
+
+int main()
+{
+ while ()
+ {
+ Test t;// Object is created
+ if ()
+ {
+ Test t2; // Object is created
+
+ }// Object is destroyed (t2)
+
+ }//Object is destroyed (t)
+}
+
+ ```