Як створити екземпляр класу

Як створити екземпляр класу

Об’єктно-орієнтована парадигма програмування є превалюючою в усіх сучасних засобах і мовами, призначених для створення програмного забезпечення. Індустріальним стандартом сьогодні є об’єктно-орієнтована мова програмування C + +. Створити екземпляр класу в C + + можна кількома різними способами.

Вам знадобиться

- Компілятор C + +.

Інструкція

  1. Створіть екземпляр класу як auto-змінну в локальній області видимості, обумовленою функцією, методом класу або операторних блоком. Використовуйте декларативне або імперативне визначення об’єкта класу в обраному місці програми. При необхідності здійсните явний виклик будь-якого конструктора з параметрами. Створіть об’єкт за допомогою коду, аналогічного наступного: void CMyClass:: SomeMethod ()

    {

    COtherClass oSomeObject1; / / створення об’єкта за допомогою конструктора за замовчуванням

    COtherClass oSomeObject2 (1980, «Victor V. Vakchturov»); / / створення об’єкта за допомогою конструктора з параметрами

    }

    Пам’ять під об’єкти класів, створюваних подібним способом, як і під будь-які інші auto-змінні, виділяється на стеку. Тому при виході з області видимості і видаленні Фремо стека, об’єкт буде знищений (з викликом деструктора).
  2. Створіть екземпляр класу в області динамічно розподіляє пам’яті за допомогою оператора new. Визначте змінну типу покажчика на об’єкти класу, екземпляр якого повинен бути створений. Дайте йому значення, що є результатом обчислення оператора new. Викликайте відповідний конструктор. Використовуйте фрагмент коду, аналогічний наступного:

    CSomeClass * poSomeObject; / / визначення покажчика на об’єкти класу CSomeClass

    poSomeObject = new CSomeClass; / / Створення об’єкта класу

    CSomeClass * poSomeObject_2 = new CSomeClass (111, «3V»); / / створення з викликом конструктора з параметрами

    При створенні об’єктів даним методом використовується механізм виділення пам’яті, який визначається оператором new (якщо він не перевизначений і не встановлена ​​власна функція розподілу), тому адресу нового об’єкта заздалегідь не відомий. Всі об’єкти, створені таким чином, повинні бути явно видалені оператором delete.
  3. Створіть екземпляр класу за допомогою оператора new на самостійно виділеному фрагменті пам’яті. Використовуйте код, подібний наступному:

    void * p0 = malloc (sizeof (CSomeClass)); / / виділення пам’яті

    void * p1 = malloc (sizeof (CSomeClass)); / / виділення пам’яті

    new (p0) CSomeClass; / / Ініціалізація об’єкту на виділеній пам’яті (конструктор за замовчуванням)

    new (p1) CSomeClass (111, «abc»); / / ініціалізація об’єкта (конструктор з параметрами)

    Перед знищенням об’єктів, створених даним методом, варто явно викликати їх деструктор:

    ((CSomeClass *) p0 )->~();

    Створення об’єктів подібним чином в основному використовується в шаблонних класах-контейнерах різних бібліотек (таких як STL).

Зверніть увагу

Не забувайте видаляти динамічно створені об’єкти оператором delete, інакше пам’ять процесу може закінчитися.

Корисні поради

Застосовуйте розумні покажчики (smart pointers) для ефективного управління динамічно розподіленою пам’яттю.