diff options
Update README.md
1 files changed, 127 insertions, 1 deletions
| -rw-r--r-- | Sem. 04/README.md | 128 |
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) +} + + ``` |
