C++ OOP — Конструктори, Деструктори та Дружні Функції: Одним Кроком

pic

Вітаємо вас на нашому шляху через Об'єктно-орієнтоване програмування (OOP) в C++!

У цій частині ми поглибимося в такі концепти, як конструктори, деструктори, друзі-функції та багато іншого.

Тож давайте зануримося 🙂

Що таке Конструктор?

Конструктор — це спеціальна функція в класі, яка автоматично ініціалізує об'єкти, коли вони створюються.

Ключові моменти про конструктори:

  1. Назва конструктора збігається з назвою класу.
  2. Він викликається автоматично при створенні об'єкта.
  3. У конструктора немає типу повернення — навіть void.
  4. Конструктори можуть бути перевантажені (можна визначити кілька конструкторів з різними параметрами).

Типи конструкторів

1. Конструктор за замовчуванням

Конструктор без параметрів. Ініціалізує об'єкти значеннями за замовчуванням.

class ABC {  
 int x;  
public:  
 ABC() { // Конструктор за замовчуванням  
 x = 0;  
 std::cout << "Викликано конструктор за замовчуванням!" << std::endl;  
 }  
};  

int main() {  
 ABC obj; // Тут викликається конструктор за замовчуванням  
 return 0;  
}

2. Параметризований конструктор

Цей конструктор приймає аргументи для ініціалізації об'єкта.

class ABC {  
 int x;  
public:  
 ABC(int y) { // Параметризований конструктор  
 x = y;  
 std::cout << "Викликано параметризований конструктор!" << std::endl;  
 }  
};  

int main() {  
 ABC obj(10); // Передаємо 10 у конструктор  
 return 0;  
}

3. Конструктор копіювання

Використовується для створення копії об'єкта.

class ABC {  
 int x;  
public:  
 ABC(int y) { x = y; } // Параметризований конструктор  
 ABC(const ABC &obj) { // Конструктор копіювання  
 x = obj.x;  
 std::cout << "Викликано конструктор копіювання!" << std::endl;  
 }  
};  

int main() {  
 ABC obj1(10); // Викликається параметризований конструктор  
 ABC obj2 = obj1; // Викликається конструктор копіювання  
 return 0;  
}

Що таке Деструктор?

Деструктор — це "прибиральник" для вашого об'єкта. Він автоматично викликається, коли об'єкт виходить з області видимості або коли його явно знищують.

Ключові моменти про деструктори:

  1. Назва деструктора збігається з назвою класу, але починається з тильди (~).
  2. Він не приймає аргументів і не повертає значення.
  3. Для класу існує лише один деструктор.
  4. Використовується для звільнення ресурсів, таких як пам'ять.

Приклад:

class ABC {  
 public:  
 ABC() {  
 std::cout << "Викликано конструктор!" << std::endl;  
 }  
 ~ABC() { // Деструктор  
 std::cout << "Викликано деструктор!" << std::endl;  
 }  
};  
int main() {  
 ABC obj; // Викликається конструктор  
 return 0; // Деструктор викликається автоматично тут  
}

Друзі-функції та класи

  • Дружня функція (friend function) може отримати доступ до приватних та захищених членів класу, навіть якщо вона не є членом класу.
  • Подібно до цього, дружній клас (friend class) може отримати доступ до приватних/захищених членів іншого класу.

Приклад:

class ABC {  
 private:  
 int x;  
 public:  
 ABC(int val) : x(val) {}  
 friend void display(ABC obj); // Оголошення дружньої функції  
};  
void display(ABC obj) { // Означення дружньої функції  
 std::cout << "Значення x: " << obj.x << std::endl;  
}  
int main() {  
 ABC obj(10);  
 display(obj); // Викликається дружня функція  
 return 0;  
}

Висновок

Тепер ви добре розумієте такі концепти, як конструктори, деструктори, віртуальні функції та абстрактні класи, зміцнивши своє розуміння OOP в C++.

З цим завершується наша серія C++ OOPs: One Shot. Слідкуйте за наступною цікавою серією!

Перекладено з: C++ OOPs — Constructors, Destructors & Friend Function : One Shot

Leave a Reply

Your email address will not be published. Required fields are marked *