Константні функції-члени. Функції-члени volatile
Зміст
- 1. Які функції називаються константними функціями-членами класу?
- 2. Приклад оголошення класу, що містить константні (const) функції-члени
- 3. Який загальний вигляд функції-члена класу, що повертає об’єкт типу volatile?
- 4. Приклад оголошення класу, що містить функції-члени volatile
- Зв’язані теми
Пошук на інших ресурсах:
1. Які функції називаються константними функціями-членами класу?
Функції, які повертають константний об’єкт називаються константними функціями. Якщо такі функції оголошені в класі, то ці функції називаються константними функціями-членами класу.
Щоб оголосити функцію, яка повертає константний об’єкт, потрібно перед оголошенням функції розмістити ключове слово ‘const’
const returned_type FunName(parameters) { // function's body // ... }
де
- returned_type – тип, що повертається функцією;
- parameters – параметри функції;
- FunName – ім’я функції, що повертає константний об’єкт (константної функції).
Якщо функція оголошена в класі, то приблизне її оголошення буде таким:
class CMyClass { private: // приватні члени та методи класу // ... public: // загальнодоступні члени та методи класу // ... // оголошення константної функції в класі const returned_type FunName(parameters); } // реалізація функції FunName const returned_type CMyClass::FunName(parameters) { // тіло функції FunName() // ... }
2. Приклад оголошення класу, що містить константні (const) функції-члени
У прикладі оголошується клас CMyClass, що містить константну функцію GetX(), яка повертає константне значення типу double.
// клас, що містить оголошення константної функції class CMyClass { double x; // внутрішня змінна public: CMyClass(void); // конструктор void SetX(double nx); const double GetX(void); // константна функція-член класу };
Використання константної функції в деякому програмному коді:
// використання константної функції CMyClass MC; MC.SetX(25.08); // встановлення значення x // використання константної функції GetX() класу CMyClass double t1 = MC.GetX(); // t1 = 25.08 - ініціалізація змінної const double t2 = MC.GetX(); // t2 = 25.08 - ініціалізація константи
3. Який загальний вигляд функції-члена класу, що повертає об’єкт типу volatile?
Об’єкт (змінна), що оголошений зі специфікатором volatile може бути змінений у програмі неявно без застосування явно заданих команд. Ключове слово volatile інформує компілятор, що значення змінної у програмі може бути змінене неявно (програмою обробки переривань, фоновим процесом, тощо). Знаючи про неявну мінливість змінної у програмі (ключове слово volatile), компілятор сформує код, що буде опитувати значення змінної перед кожним її використанням у програмі. Таким чином, буде сформовано реальне значення змінної (а не те, що було до зміни).
Наприклад. Нехай у деякій програмі P реалізована глобальна змінна X, що містить адресу, яка може бути змінена програмою-обробником переривання. Програма-обробник переривання викликається незалежно від виконання даної програми P і відповідним чином змінює значення цієї глобальної змінної X. Якщо у програмі P не вказати ключового слова volatile перед X, то, при зчитуванні значення X у програмі P може відображатись старе значення X. Якщо вказати слово volatile, то компілятор буде оновлювати значення змінної X при кожному звертанні до неї, і, спотворення результату не буде.
Функції-члени, які оголошені зі специфікатором volatile просто повертають непостійний (volatile) об’єкт. Такий об’єкт може бути присвоєний змінній, що оголошена з специфікатором volatile.
Загальний вигляд класу, що містить функцію, яка повертає volatile-значення
class CMyClass { private: // приватні члени та методи класу // ... public: // загальнодоступні члени та методи класу // ... // оголошення константної функції в класі volatile returned_type FunName(parameters); } // реалізація функції FunName volatile returned_type CMyClass::FunName(parameters) { // тіло функції FunName() // ... }
де
- returned_type – тип, що повертається функцією;
- parameters – параметри функції;
- FunName – ім’я функції, що повертає volatile-об’єкт.
4. Приклад оголошення класу, що містить функції-члени volatile
У класі CMyVolatileClass оголошено функцію Get(), що повертає volatile-значення типу int.
// клас, що містить volatile-функцію class CMyVolatileClass { int d; public: CMyVolatileClass(void); // функції-члени класу // звичайна функція-член класу void Set(int nd) { d = nd; } // функція-член класу, що повертає volatile-значення volatile int Get(void); };
Демонстрація використання класу в деякому методі чи програмному коді:
// клас, що містить volatile-функцію CMyVolatileClass VC; VC.Set(33); // виклик звичайної функції // виклик volatile-функції для звичайної змінної int t1 = VC.Get(); // t1 = 33 volatile int t2; // виклик volatile-функції для volatile-змінної t2 = VC.Get(); // t2 = 33
Як видно з вищенаведеного коду, volatile-функції можна використовувати у поєднанні зі звичайними та volatile-змінними.
Зв’язані теми
- Види функцій-членів класу. Звичайні функції-члени класу. Статичні (static) функції-члени класу. Приклади використання
- Функції-члени класу, що оголошені з константним (const) покажчиком this та непостійним (volatile) покажчиком this
- Inline функції-члени класу. Ключове слово inline