Почему ссылка const lvalue на массив не компилируется ниже? - PullRequest
0 голосов
/ 24 апреля 2018

Ссылка на постоянное значение int(const& crb)[3] = b; не компилируется.Почему?

#include<iostream>

int a = 1;
int b[3] = { 1, 2, 3 };

int main(){
    int& ra = a;             // Ok
    int const& cra = a;      // Ok

    int(&rb)[3] = b;         // Ok
    int(const& crb)[3] = b;   // Doesn't compile
}

Сообщение об ошибке, отправляемое g ++:

error: expected primary-expression before 'int'
int(const& crb)[3] = b;
^~~

1 Ответ

0 голосов
/ 24 апреля 2018

Ссылка всегда постоянна, вы не можете изменить ссылку.int const (& crb)[3] = b; здесь у нас есть ссылка на массив const int, мы также можем написать const int (& crb)[3] = b; Это будет то же самое.

Указатели имеют различие, указатель может быть изменен

const int *p;- здесь это указатель на const int

int const *p; - здесь это указатель const на int

const int const *p; - здесь это указатель const на const int

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...