Ссылки и указатели
От: x-code  
Дата: 27.06.19 19:32
Оценка: 4 (1)
Существует два синтаксических подхода к доступу к объектам, созданным динамически (в куче): через ссылки и через указатели. Обращение через ссылку неотличимо от непосредственного обрашения к объекту, обращение через указатель явно отличается (присутствует явное разыменование).

В C# и Java используются ссылки, при этом введено соглашение что все объекты классов передаются по ссылке, а структуры и переменные примитивных типов — по значению. Там невозможно создать класс не стеке.

В C, Go, Rust используются явные указатели и явное размыенование. То есть синтаксис косвенного обращения — через указатель — всегда отличается от синтаксиса прямого обращения к стековому или глобальному объекту. В С++ сосуществуют и указатели и ссылки, причем поведение ссылок отличается от такового в C#.

В чем по-вашему преимущества и недостатки обоих подходов? Что лучше — явность (однозначно виден способ передачи объекта в функцию, способ обращения к нему и т.д.) или унификация доступа (везде точка, никаких разыменований)? Какой подход вам больше нравится? Правильно ли то, что в С++ сосуществуют оба способа, почему так сложилось, дает ли это какие-то преимущества и создает ли это какие-либо проблемы?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.