2016-06-23 3 views
0

почему этот код показывает ошибку при компиляции?C++ const в аргументе

#include <iostream> 

using namespace std; 

void foo(int& x){ 
    // cout<<x; 
} 

int main(){ 
    //int x=3; 
    foo(3); 
    return 0; 
} 

но путем изменения аргумента константного его компилирует правильно

#include <iostream> 

using namespace std; 

void foo(const int& x){ 
    // cout<<x; 
} 

int main(){ 
    //int x=3; 
    foo(3); 
    return 0; 
} 

, но я до сих пор прохожу целое число, так как оно компилирует путем добавления сопзЬ в аргументе?

+0

Обычная цель использования ссылочного параметра заключается в том, что вы можете изменить переменную вызывающего, назначив этому параметру. Что следует изменить, если у вас есть ссылка на '3' вместо переменной? – Barmar

ответ

2

int& x может быть изменен, так что он не может получить ссылку на const int как 3.

const int& x не может быть изменен и тип идеально соответствовать const int как 3, так почему вы ожидаете, что это не получится?

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