С++ вопросы : Вопрос 1 : 68

В каких случаях применяется ключевое слово const?

 

Уважаемые учащиеся ниже Вы сможете увидеть ответ, перед тем, как ответить, пожалуйста, постарайтесь написать для себя ответ на черновике, и только потом сравните наш ответ с Вашим: 

 

 

 

 

Верно ли наше решение?

Ответ:

1. Позволяет задать константность объекта

const int i = 8; 
i = 125; // error C3892: 'i' : you cannot assign to a variable that is const 


2. Позволяет указать, что данный метод не модифицирует члены класса, т.е. сохраняет состояние объекта. Константный метод может изменять члены класса, если они объявлены как mutable.

class Foo 
{ 
private: 
    int i; 
public: 
    void func() const 
    { 
        i = 3; // error C3490: 'i' cannot be modified because it is being accessed through a const object 
    } 
}; 


3. Позволяет задать константность указателя

int i = 4; 
int* const j(&i); 
int k = 6; 
*j = k; // Ok 
j = &k; // error C3892: 'j' : you cannot assign to a variable that is const 


4. const можно использовать со ссылками, чтобы через ссылку нельзя было поменять значение переменной.

int p = 4; 
const int& x=p; //нельзя через x поменять значение p 
x=5; //ошибка 


5. const удобен, если нужно передать параметры в функцию, но при этом надо обязательно знать, что переданный параметр не будет изменен.

void f1(const std::string& s); 
void f2(const std::string* sptr); 


В первой и второй функции попытки изменить строку будут пойманы на этапе компиляции. 
6. Объявления

int const* p2 
const int* p3 


это по разному записанное одно и то же объявление. Указатель на целое, которое нельзя менять. 
7. Для предотвращения нечаянной модификации возвращенного объекта можно объявить тип возврата как const:

const int &get_val( ... ) 
1 балл


© Copyright © 2017 - 2019 Все права защищены. Бесплатное онлайн образование.