Функция c ++: передать аргумент, отличный от const, в параметр ссылки const

предположим, что у меня есть функция, которая принимает константный эталонный аргумент,

int func(const int &i)
{
  /*    */
}

int main()
{
  int j = 1;
  func(j); // pass non const argument to const reference
  j=2; // reassign j
}

этот код работает нормально. в соответствии с примерами C ++, что этот аргумент передает этой функции как показано ниже,

int j=1;
const int &i = j;

в котором i является синонимом (псевдонимом) j,

мой вопрос: если i является синонимом j, а i определен как const, это код:

const int & i = j

преобразовать неконстантную переменную в константную? почему это выражение допустимо в C ++?

7
задан iammilind 3 February 2012 в 10:35
поделиться