Теми рефератів
> Авіація та космонавтика > Банківська справа > Безпека життєдіяльності > Біографії > Біологія > Біологія і хімія > Біржова справа > Ботаніка та сільське гос-во > Бухгалтерський облік і аудит > Військова кафедра > Географія
> Геодезія > Геологія > Держава та право > Журналістика > Видавнича справа та поліграфія > Іноземна мова > Інформатика > Інформатика, програмування > Історія > Історія техніки
> Комунікації і зв'язок > Краєзнавство та етнографія > Короткий зміст творів > Кулінарія > Культура та мистецтво > Культурологія > Зарубіжна література > Російська мова > Маркетинг > Математика > Медицина, здоров'я > Медичні науки > Міжнародні відносини > Менеджмент > Москвоведение > Музика > Податки, оподаткування > Наука і техніка > Решта реферати > Педагогіка > Політологія > Право > Право, юриспруденція > Промисловість, виробництво > Психологія > Педагогіка > Радіоелектроніка > Реклама > Релігія і міфологія > Сексологія > Соціологія > Будівництво > Митна система > Технологія > Транспорт > Фізика > Фізкультура і спорт > Філософія > Фінансові науки > Хімія > Екологія > Економіка > Економіко-математичне моделювання > Етика > Юриспруденція > Мовознавство > Мовознавство, філологія > Контакти
Українські реферати та твори » Информатика, программирование » Елементи класу, про яких завжди необхідно пам'ятати

Реферат Елементи класу, про яких завжди необхідно пам'ятати

Малишев Сергій Михайлович

Мова піде про чотирьох дуже спеціальних членах, які мають враховуватися при створенні кожного класу. Це конструктор за умовчанням, конструктор копій, операція присвоювання і деструктор. Зауважте, це зовсім не означає, що ви повинні обов'язково кожен раз писати всі ці чотири функції для кожного класу, який ви створюєте. Мова йде тільки про те, що ви повинні приймати їх до уваги при створенні будь-якого класу і робити висновки про їх необхідність.

Ці чотири члени в принципі є функціями, але не типовими. Вони виглядають зовсім як функції, але, як нескладно помітити, деякі з них не повертають ніяких значень. Ці функції призначені для створення (ініціалізації), копіювання і видалення (руйнування) об'єктів класу.

BR> Дуже докладно ми розглянемо проблеми копіювання і присвоювання для класів, присвятивши цього кілька окремих матеріалів. А поки, все, що викладається нижче, можна розглядати, як вступну частину до цих досить складних питань.

1. Конструктори

Конструктори - Це члени класів, використовувані для створення об'єктів-екземплярів класів. Є кілька різновидів конструкторів, в їх числі є досить своєрідні. Але основне їхнє призначення в будь-якому випадку одне і те ж: забезпечення зручного способу створення об'єкта-примірника класу.

Ми розглянемо конструктор за умовчанням, конструктор копій, аргументи за умовчанням в конструкторі і інші конструктори.

Як вже було зазначено, конструктори - це функції-члени, не повертають ніяких значень (навіть типу void). Іншою їхньою особливістю є те, що їх ім'я повинно в точності, включаючи регістр символів, збігатися з ім'ям класу. Тобто, якщо клас називається Any_Class, то його конструктор також повинен називатися Any_Class.

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

Отже, конструктор за замовчуванням (default constructor) - це конструктор, не приймаючий (не має) аргументів.

Таким чином, конструктор за замовчуванням для якогось довільного класу буде виглядати так:

class ANY_CLASS

{

public:

ANY_CLASS ();// конструктор за замовчуванням

...// Тут все інше

};

Зазвичай конструктори оголошуються у відкритій (public) секції класу, оскільки діяльність конструкторів полягає у створенні об'єкта типу класу, і вони викликаються ззовні класу. Виклики конструкторів, як правило, відбуваються неявно. Наприклад, створення одиночного об'єкта типу ANY_CLASS може виглядати наступним браза:

ANY_CLASS ас;// ас - це об'єкт класу ANY_CLASS

Зауважте, що в цьому операторі зовсім відсутні дужки, конструювання - це неявна операція.

Масив об'єктів типу ANY_CLASS може бути створений так:

ANY_CLASS aac [10];// aас - це масив з 10 елементів

Як бачите, синтаксис оголошення масиву об'єктів точно такий же, як і синтаксис оголошення статичного масиву даних будь-якого базового (вбудованого) типу. Одна із завдань мови C + + полягає в наданні користувачам можливості звертатися зі складними типами даних таким же чином, як і з вбудованими.

Завдяки неявній природі конструювання об'єктів досягається перший її аспект: створення об'єкту виглядає точно так само, як і створення звичайної змінної.

речі, створити МАСИВ об'єктів можна ТІЛЬКИ в тому випадку, якщо для класу визначений конструктор за замовчуванням.

3. Конструктор копій.

Робота конструктора копій (copy constructor) полягає в наданні можливості ініціалізації (створення) нового об'єкта з вже існуючого. Для пояснення глибинних механізмів цього процесу потрібна була б не одна голова, тому ми ознайомимося з ними поки коротенько.

Загальний синтаксис конструктора копій такий:

My_Class (const My_Class &);// тут My_Class - це ім'я класу

В конструкторі копіювання класу My_Class як параметр використовується посилання на об'єкт цього класу. Причому ця посилання оголошується зі специфікатором const. І в цьому немає нічого дивного.

Як відомо, вираз виклику функції з параметром типу X нічим не відрізняється від вираження виклику функції, у якої параметром є посилання на об'єкт типу X. При виклику такої функції не доводиться копіювати об'єкти як параметри. Передача адреси не вимагає копіювання об'єкта, а значить, при цьому не буде і рекурсії.

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

Тут є багато моментів, які слід мати на увазі, і всі вони виключно важливі для розуміння класів C + +, але подальше обговорення конструктора копій ми відкладемо до глави, спеціально присвяченій копіюванню та присвоєння.

4. Аргументи за замовчуванням в конструкторі.

У будь-яких функцій можуть бути аргументи за умовчанням. Це відноситься до конструкторам в тій же мірі, як і до будь-яких інших функцій-членам та глобальним функціям. Аргумент за замовчуванням - це значення, яке присвоюється аргументу, якщо користувач явно не задав інше значення.

Оскільки Зараз мова йде конкретно про конструкторів, розглянемо відповідний приклад. Аргументи за замовчуванням зручні в тих випадках, коли відомо певний (або переважне) значення аргументу, але при цьому бажано зберегти можливість завдання іншого значення при створенні об'єкта. Розглянемо в Як приклад якийсь гіпотетичний клас, що описує файл.

class FILE

{

public:

FILE (char * FileName = "file.bin");

// "File.bin" - це аргумент по

// замовчуванням ... // Все інше

};

Якщо аргументу FileName типу char * в конструкторі не передати яке або значення, то буде автоматично підставлено значення "file.bin".

Таким чином, екземпляри класу FILE можна створювати наступними способами:

FILE IniFile;// буде створений файл з ім'ям file.bin

FILE Archive ("Archive.dat");// буде створений файл з ім'ям Archive.dat

Правило використання аргументів за замовчуванням таке: аргументу можна задати значення за замовчуванням, якщо він знаходиться правіше всіх у списку аргументів, або якщо всі аргументи правіше нього мають значення за замовчуванням.

Нижче наведено кілька фіктивних конструкторів, демонструють приклади правильного і неправильного вживання аргументів за замовчуванням:

DATA (int а = 0, int b);// явна помилка: DATA F (, 5) виглядає безглуздо ...

DATA (int а, int b = 10);// правильно, можна створити об'єкти DATA G (5);

// або DATA G (3, 4);

DATA (int a = 0, int b = 10) ;//правильно, можна створити об'єкти DATA Н (3, 4);

// або DATA R;

Правило для аргументів за замовчуванням було введено для того, щоб не виникало ситуацій типу "пробіл кома аргумент" (див. перший приклад для об'єкта F (, 5)), які вельми чреваті помилками, та й виглядають неважливо.

Необхідно також зазначити наступне: конструктор, всі аргументи якого забезпечені значеннями за замовчуванням, може викликатися і з аргументами, і без аргументів, то Тобто при виклику виглядати як звичайний конструктор за замовчуванням (див. приклад для DATA Н (3, 4); та DATA R ;).

Тому бажано уникати невизначеності, що виникає при одночасному завданні в класі конструктора за замовчуванням, тобто без аргументів, і конструктора, у якого всі аргументи мають значення за замовчуванням.

5. Конструктори в цілому.

Отже, невелике висновок. Конструктори призначені для того, щоб забезпечити розробника класу засобом для зручної ініціалізації кожної із складових частин класу. Кількістю і різноманітністю аргументів конструктора немає межі. Однак, зазвичай типи аргументів повинні відповідати даним-членам класу, то Тобто того, що врешті-решт треба ініціалізувати.

Вимог до створення конструкторів небагато: ви змушені враховувати, що ...


Страница 1 из 2 | Следующая страница

Друкувати реферат
Замовити реферат
Поиск
Товары
загрузка...