
- •Конструктори і деструктори
- •Правила для конструкторів
- •Правила для деструкторів
- •Список ініціалізації елементів
- •Конструктори за замовчуванням
- •Конструктори копіювання
- •Покажчик this
- •Статичні дані- члени класу
- •Статичні функції - члени класу
- •Константні дані - члени класу
- •Константні функції - члени класу
- •Константні об'єкти
Статичні функції - члени класу
Особливістю використання статичних функцій-членів є те, що вони також визначені в єдиному екземплярі й не є безроздільною власністю якогось представника класу.
У зв'язку із цим їм не передається покажчик this. Ця особливість статичних функцій-членів використовується при написанні функцій-оброблювачів переривань і callback-функцій ( при програмуванні для Windows).
Зі сказаного вище випливає кілька важливих наслідків:
статична функція-член може викликатися незалежно від того, існує чи ні який-небудь представник класу;
статична функція-член може маніпулювати тільки статичними даними-членами класу й викликати тільки інші статичні функції-члени класу;
статична функція-член не може бути оголошена з модифікатором virtual.
Константні дані - члени класу
Данні-члени класу може бути оголошений з модифікатором const, який указують перед типом константного даного. Ключове слово const інформує компілятор, що значення даного елемента об'єкта не повинне змінюватися після ініціалізації. Константні дані-члени класу не можна ініціалізувать у конструкторові звичайним образом. Список ініціалізації є єдиним методом ініціалізації даних-констант. Приведемо приклад оголошення константного даного і його ініціалізації:
class Dot
{
const char name ; // ім'я крапки – константне дане-член
double x, y ; // координати крапки
public: // відкриті члени класу
Dot ( char Name, double X, double Y ) : name ( Name ), x ( X ), y ( Y ) { }
Dot ( char Name) : name ( Name ), x ( 0 ), y ( 0 ) { }
} ;
Константні функції - члени класу
Функція-член класу може бути оголошена з модифікатором const, який іде за списком параметрів. Така функція не може змінювати значення даних-членів класу й не може викликати не константні функції-члени класу. Приведемо приклад оголошення константної функції-члена класу:
class Coord
{
double x, y ; // координати
public : // відкриті члени класу
Coord ( ) { x = 0 ; y = 0 ; } // ініціалізує координати нулями
double Getx ( ) const { return x ; } // константна функція повертає коорд x
double Gety ( ) const { return y ; } // константна функція повертає коорд y
void Setx ( double X ) { x = X ; } // встановлює задане знач коорд x
void Sety ( double Y ) { y = Y ; } // встановлює задане знач коорд у
} ;
Константні об'єкти
Можна також створювати константні об'єкти. Для цього перед їхнім оголошенням ставлять модифікатор const. Наприклад,
const Coord A ( 3, 5 ) ;
Ключове слово const інформує компілятор, що стан даного об'єкта не повинен змінюватися. У зв'язку із цим компілятор генерує повідомлення про помилку, якщо для константного об'єкта викликається функція-член (яка може змінити його дані-члени, змінивши тим самим його стан). Виключенням із цього правила є константні функції-члени, які в силу свого визначення не змінюють стан об'єкта.