C ++ ссылочный указатель как параметр для изменения указателя - PullRequest
0 голосов
/ 04 марта 2019

Я недавно встречал *& в качестве параметра в функции.
Насколько я понял, он похож на **.

Зачем это нужно в функции, которая изменяет указатель?Например, с ключевым словом new

Допустим, у меня есть указатель int* a, зачем мне передавать параметр как "ссылку на указатель", если я хочу сделать a = new int; внутри этой функции?

1 Ответ

0 голосов
/ 04 марта 2019

Если функция принимает int* в качестве своего параметра, то указатель передается по самому значению, что означает, что любая модификация самого указателя (не указателя) внутри функции не имеет ничего общего с исходным указателем.например,

void foo(int* a) { a = new int; }

int* a = nullptr;
foo(a);
// a is still nullptr here

Если вы измените тип параметра на int*&, он будет другим.

void foo(int*& a) { a = new int; }

int* a = nullptr;
foo(a);
// a gets modified
...