Я видел, как кто-то использовал этот
void methodA(const int*& var);
в одном ответе, но не мог понять, что означает аргумент.
AFAIK:
-
const int var
= > const значение, которое нельзя изменить -
const int* var
= > указатель на int, который является const i.e * var не может быть изменен, но var можно изменить -
const int& var
= > ссылка на const int i.e значение var не может быть изменено
Что означает const int*& var
и возможно const int& *var
?
Не могли бы вы привести также пример, например, что можно сделать и что с ним нельзя сделать?
ОБНОВЛЕНИЕ:
Я не уверен, правильно ли я думаю, но я начал рассматривать ссылку как псевдоним переменной, прошедшей как аргумент, поэтому const int * p; methodA (p) = > здесь мы передаем p как const int *, но мы не знаем, проходит ли это по значению или что до тех пор, пока мы не увидим определение метода A,
поэтому, если метод A подобен этому methodA (const int * и p2) == > здесь p2 - это другое имя для p, то есть p и p2 с этого момента совпадают и если methodA (const int * p2) == > здесь p2 передается как значение i.e p2 является только локальным для этого метода,
пожалуйста, поправьте меня, если я ошибаюсь. Если да, мне может понадобиться изучить еще кое-что об этом? Не могли бы вы указать несколько хороших ссылок?
ОБНОВЛЕНИЕ 2 Если какой-то новичок, как я, хочу узнать больше об этом, вы можете использовать С++ decl/ программу cdecl, которую я только что обнаружил очень полезную из здесь
$ c++decl
Type `help' or `?' for help
c++decl> explain const int&* p
declare p as pointer to reference to const int
c++decl> explain const int*& p
declare p as reference to pointer to const int
Но, как указал каждый из них, первый пример не является законным в С++.
Спасибо