Website Summary Files Commits Branches @commit @diff @stats
path: root / Sem. 04
NameSize
..
README.md3.3 KiBlog stats plain blame
Student_example.cpp558 Blog stats plain blame

Член-функции. Конструктори и деструктор. Модификатори за достъп. Капсулация.

Член-функции.

Член-функциите са функции, които работят с член-данните на обекта от дадена структура. ```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

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)

}

``` ## Конструктори и деструктор при влагане на обекти. TBI (темата е разгледана в час)