kzhereb / knu-is-ooop2019

Materials for "Fundamentals of OOP" course
MIT License
3 stars 0 forks source link

T10.10. Що означає const в класах? Як з ним працювати? #10

Open WAG13 opened 4 years ago

JuliaSamartseva commented 4 years ago

Const використовується для того, щоби зробити код більш зрозумілим.

const a = 4;
a = 5; // error
class A {
private:
    int x, y;
public:
    int getX() const {
        x = 3; //error
        return x;
    }
};
aoyako commented 4 years ago

Лише константні методи можна викликати з константного екземпляру класу.

solovdaria commented 4 years ago

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

Velly69 commented 4 years ago

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

AntonHladkiy commented 4 years ago

якщо поле визначене, як const то далі його не можливо буде змінити,якщо після параметрів функції написано слово const то така функція(метод) не може змінити поля об'єкту.

RostyslavMV commented 4 years ago

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

i1red commented 4 years ago

const метод не може змінювати об'єкт(тобто змінювати його поля у тілі методу або викликати неконстантні методи), відповідно з константного екземпляру класу можна викикати тільки константні методи

ilyakorenevskyi commented 4 years ago

const змінні не можна змінювати, а задавати значення тільки при створенні, використовується для зберігання констант, або щоб функція точно не змінить const змінну/об'єкт

WAG13 commented 4 years ago

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

Vladyslav-Samokryk commented 4 years ago

Функції, які повертають константний об'єкт називаються константними функціями. Якщо такі функції оголошені в класі, то ці функції називаються константними функціями-членами класу. Щоб оголосити функцію, яка повертає константний об'єкт, потрібно перед оголошенням функції розмістити ключове слово 'const'