2015-08-20 2 views
0

Скажем, у меня есть эта программа:Переходя константное значение по ссылке

const int width = 4; 

void test(int&){} 

int main() { 
    test(width); 
} 

Это не будет компилироваться. Я замечаю, что постоянные значения (также константы перечисления) с именами (такими как ширина) не могут быть переданы по ссылке. Почему это так?

+0

Другим вариантом является 'void test (const int &) {}', который является как const, так и ссылкой. –

ответ

11

Представьте себе:

void test (int& j) { j++; } 

Если test ли изменить значение вещей ссылочных, ясно, мы не можем назвать его константным параметром. И если это не так, почему он принимает свой параметр с помощью неконстантной ссылки?

0

Передача по ссылке позволяет нам изменить фактический объект. Если объект определен как const, его нельзя изменить. Именно это означает константа.

Смежные вопросы