У цій статті описано різні функції ключове слово const який знаходиться в C++ обговорюються. Будь-коли ключове слово const приєднується до будь-якого method(), змінної, покажчик змінної , а з об’єктом класу запобігає цьому конкретному об'єкт/метод()/змінна щоб змінити значення елементів даних.
що робить ravel у python
Постійні змінні:
Існує певний набір правил для оголошення та ініціалізації постійних змінних:
- The змінна const не можна залишити неініціалізованим під час призначення.
- Йому не можна призначити значення ніде в програмі.
- Константній змінній необхідно надати явне значення під час оголошення константної змінної.

Нижче наведено програму C++ для демонстрації вищезазначеної концепції:
C++ // C++ program to demonstrate the // the above concept #include using namespace std; // Driver Code int main() { // const int x; CTE error // x = 9; CTE error const int y = 10; cout << y; return 0; }> Вихід
10>
Помилка, пов’язана з неправильною декларацією : Якщо ви спробуєте ініціалізувати змінну const без присвоєння явного значення, тоді генерується помилка під час компіляції (CTE).

Ключове слово Const зі змінними-вказівниками:
Покажчики можуть бути оголошені за допомогою ключового слова const. Отже, є три можливі способи використання ключового слова const із вказівником, які є такими:
Коли змінна покажчика вказує на постійне значення :
Синтаксис:
const data_type* var_name;>
Нижче наведено програму C++ для реалізації вищезазначеної концепції:
C++ // C++ program to demonstrate the // above concept #include using namespace std; // Driver Code int main() { int x{ 10 }; char y{ 'M' }; const int* i = &x; const char* j = &y; // Value of x and y can be altered, // they are not constant variables x = 9; y = 'A'; // Change of constant values because, // i and j are pointing to const-int // & const-char type value // *i = 6; // *j = 7; cout << *i << ' ' << *j; }> Вихід
9 A>
Пояснення: У наведеному вище випадку i та j є двома змінними-покажчиками, які вказують на місце пам’яті const int-type та char-type, але значення, що зберігається в цих відповідних розташуваннях, можна змінити, як ми робили вище.
Інакше , в з'явиться така помилка: Якщо ми спробуємо змінити значення змінної const.

Коли змінна вказівника const вказує на значення :
Синтаксис:
data_type* const var_name;>
Нижче наведено приклад для демонстрації вищезазначеної концепції:
C++ // C++ program to demonstrate the // above concept #include using namespace std; // Driver Code int main() { // x and z non-const var int x = 5; int z = 6; // y and p non-const var char y = 'A'; char p = 'C'; // const pointer(i) pointing // to the var x's location int* const i = &x; // const pointer(j) pointing // to the var y's location char* const j = &y; // The values that is stored at the memory location can // modified even if we modify it through the pointer // itself No CTE error *i = 10; *j = 'D'; // CTE because pointer variable // is const type so the address // pointed by the pointer variables // can't be changed // i = &z; // j = &p; cout << *i << ' and ' << *j << endl; cout << i << ' and ' << j; return 0; }> Вихід
10 and D 0x7ffe21db72b4 and D>
Пояснення: Значення, які зберігаються у відповідних змінних-вказівників i та j, можна змінювати, але місця, на які вказують змінні-вказівники const, де зберігаються відповідні значення x та y, не можна змінювати.
В іншому випадку з'явиться така помилка: Змінні вказівника є const і вказують на місця, де зберігаються x і y, якщо ми спробуємо змінити розташування адреси, тоді ми зіткнемося з помилкою.

Коли вказівник const вказує на змінну const :
Синтаксис:
const data_type* const var_name;>
Нижче наведено програму C++ для демонстрації вищезазначеної концепції:
C++ // C++ program to demonstrate // the above concept #include using namespace std; // Driver code int main() { int x{ 9 }; const int* const i = &x; // *i=10; // The above statement will give CTE // Once Ptr(*i) value is // assigned, later it can't // be modified(Error) char y{ 'A' }; const char* const j = &y; // *j='B'; // The above statement will give CTE // Once Ptr(*j) value is // assigned, later it can't // be modified(Error) cout << *i << ' and ' << *j; return 0; }> Вихід
9 and A>
Пояснення: Тут змінна-вказівник const вказує на змінну const. Отже, вам не дозволено змінювати const змінна покажчика (*P) ані значення, що зберігається у вказаному місці змінна покажчика (*P).
В іншому випадку з'явиться така помилка: Тут і змінна вказівника, і розташування, на які вказує змінна вказівника, є постійними, тому, якщо будь-яке з них змінено, з’явиться така помилка:

Передача значення константного аргументу неконстантному параметру функції викликає помилку : Передача значення аргументу const неконстантному параметру функції є недійсною, це призводить до помилки під час компіляції.
Нижче наведено програму C++ для демонстрації вищезазначеної концепції:
C++ // C++ program to demonstrate // the above concept #include using namespace std; int foo(int* y) { return *y; } // Driver code int main() { int z = 8; const int* x = &z; cout << foo(x); return 0; }> Вихід: Помилка під час компіляції, яка з’явиться так, ніби константне значення передається будь-якому неконстантному аргументу функції, тоді з’явиться така помилка під час компіляції:

Крім того, передача вказівника const не призведе до жодної помилки, оскільки створюється інший вказівник, який також вказує на ту саму область пам’яті.
C++ //C++ program to demonstrate the above concept #include using namespace std; void printfunc(int* ptr) { cout << 'Value :' << *ptr << endl; cout << 'Address of ptr :' << &ptr << endl; } //Driver Code int main() { int x = 10; int* const i = &x; printfunc(i); cout << 'Address of i :' << &i << endl; }> Вихід
Value :10 Address of ptr :0x7ffff0189b48 Address of i :0x7ffff0189b70>
Код виконується без будь-яких помилок, і два покажчики мають різні адреси.
У двох словах, наведене вище обговорення можна завершити таким чином:
1. int значення = 5; // неконстантне значення
2. const int *ptr_1 = &value; // ptr_1 вказує на значення const int, тому це вказівник на значення const.
3. int *const ptr_2 = &value; // ptr_2 вказує на int, тому це постійний покажчик на неконстантне значення.
4. const int *const ptr_3 = &value; // ptr_3 вказує на значення const int, тому це вказівник const на значення const.
Константні методи:
Подібно до функцій-членів і аргументів функцій-членів, об’єкти класу також можуть бути оголошені як конст . Об’єкт, оголошений як const, не може бути змінений і, отже, може викликати лише функції-члени const, оскільки ці функції гарантують відсутність змін у об’єкті.
Синтаксис:
const Class_Name Object_name;>
- Коли функція оголошена як const, її можна викликати для будь-якого типу об’єкта, як const, так і неconst об’єктів.
- Щоразу, коли об’єкт оголошується як const, його потрібно ініціалізувати під час оголошення. Однак ініціалізація об'єкта при оголошенні можлива лише за допомогою конструкторів.
Є два способи a постійна функція декларація:
Оголошення звичайної константної функції :
const void foo() { //void foo() const Not valid } int main() { foo(); }>Постійна функція-член класу :
class { void foo() const { //..... } }>Нижче наведено приклад постійної функції:
C++ // C++ program to demonstrate the // constant function #include using namespace std; // Class Test class Test { int value; public: // Constructor Test(int v = 0) { value = v; } // We get compiler error if we // add a line like 'value = 100;' // in this function. int getValue() const { return value; } // a nonconst function trying to modify value void setValue(int val) { value = val; } }; // Driver Code int main() { // Object of the class T Test t(20); // non-const object invoking const function, no error cout << t.getValue() << endl; // const object const Test t_const(10); // const object invoking const function, no error cout << t_const.getValue() << endl; // const object invoking non-const function, CTE // t_const.setValue(15); // non-const object invoking non-const function, no // error t.setValue(12); cout << t.getValue() << endl; return 0; }> Вихід
20 10 12>
Наступна помилка виникне, якщо ви спробуєте викликати неконстантну функцію з константного об’єкта

Параметри постійної функції та тип повернення :
Параметри функції() і Тип повернення функції() може бути оголошений як константа. Константні значення не можна змінити, оскільки будь-яка така спроба призведе до помилки під час компіляції.
Нижче наведено програму C++ для реалізації вищезазначеного підходу:
C++ // C++ program to demonstrate the // above approach #include using namespace std; // Function foo() with variable // const int void foo(const int y) { // y = 6; const value // can't be change cout << y; } // Function foo() with variable int void foo1(int y) { // Non-const value can be change y = 5; cout << '
' << y; } // Driver Code int main() { int x = 9; const int z = 10; foo(z); foo1(x); return 0; }> Вихід
10 5>
Пояснення: Якщо оператор y = 6 використовується у функції foo(), буде показано наступну помилку:
- // y = 6; значення const не можна змінити або змінити.

Для типу повернення const : Функція () повертає тип const, тому вона повертає нам ціле значення const. Нижче наведено програму C++ для реалізації вищезазначеного підходу:
C++ // C++ program for the above approach #include using namespace std; const int foo(int y) { y--; return y; } int main() { int x = 9; const int z = 10; cout << foo(x) << '
' << foo(z); return 0; }> Вихід
8 9>
Повернене значення буде постійним значенням.
Крім того, немає суттєвої проблеми з передаванням постійної чи неконстантної змінної у функцію, якщо ми передаємо її за значенням, оскільки створюється нова копія. Проблема виникає, коли ми намагаємося передати константну змінну за посиланням на функцію, параметр якої не є константою. Це ігнорує кваліфікатор const, що призводить до такої помилки:

Для типу повернення const і параметра const : Тут і тип повернення, і параметр функції належать до константних типів. Нижче наведено програму C++ для реалізації описаного вище підходу:
C++ // C++ program for the above approach #include using namespace std; const int foo(const int y) { // y = 9; it'll give CTE error as // y is const var its value can't // be change return y; } // Driver code int main() { int x = 9; const int z = 10; cout << foo(x) << '
' << foo(z); return 0; }> Вихід
9 10>
Пояснення: Тут як константні, так і неконстантні значення можна передати функції як константний параметр, але нам не дозволено змінювати значення переданої змінної, оскільки параметр є константним. В іншому випадку ми зіткнемося з такою помилкою:
// y=9; це дасть помилку під час компіляції, оскільки y є const var, його значення не можна змінити.
