C ++: ссылки и умные указатели - есть ли такая вещь, как умная ссылка? - PullRequest
0 голосов
/ 29 сентября 2019

Изначально ссылки были введены в C ++ для сокрытия синтаксиса уродливых указателей, как это делают многие современные языки программирования.

Теперь с помощью умных указателей мне кажется, что мы должны (снова) явно использовать ptr->element или *ptr.element вместо просто reference.element.

Это та цена, которую мы должны заплатить за то, что имеем явный контроль над собственностью, то есть возможность сохранить или переместить ее?

Или я что-то пропустил ...?

1 Ответ

1 голос
/ 29 сентября 2019

Умный указатель - один из немногих случаев, когда имеет смысл что-то вроде ->, потому что есть два разных члена, к которым вы можете получить доступ с ним. Посмотрите на этот пример:

shared_pointer<string> a(new string);
cout << a->size() << a.use_count << endl;

Существуют функции-члены shared_pointer, которые полезны для управления им, и вы можете получить доступ к членам управляемого объекта. Было бы беспорядочно, если бы он использовал тот же синтаксис и мог создать конфликт имен.

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