arg является ссылкой на int указатель , где сам указатель является постоянным.
При объявлении arg вы заметите что (поскольку это ссылка) она должна быть инициализирована, так как ссылки не могут ссылаться ни на что.
Простой способ убедиться в этом - использовать пример:
int x;
int* const ptr = &x;
// declare an integer pointer which is constant i.e. the address it stores does not change,
// and initialize this address to the address of x
int* const& arg = ptr;
// declare a reference variable called arg, which references an integer pointer which is constant,
// the same type that ptr is, and then make it reference our ptr variable
Поскольку const аргумент находится после "*" в вашей строке кода, вы говорите C ++, что сам указатель является константой. Однако, если бы мы написали либо
const int* & arg = ...
, либо
int const* & arg = ...
, мы бы сказали С ++, что указатель указывает на данные (в данном случае целое число), которые являются постоянными. Кроме того, если бы мы написали следующее
int const* const & arg = ...
, мы сказали бы C ++, что адрес, который хранит указатель, является постоянным, и что этот адрес указывает на целое число, которое также является постоянным.
Hope это помогло!