Предложение альтернативы для точки sbi 3
a->b
используется только в том случае, если a
является указателем.Это сокращение для (*a).b
, члена b
объекта, на который указывает a
.C ++ имеет два вида указателей: «обычные» и «умные» указатели.Для обычных указателей, таких как A* a
, компилятор реализует ->
.Для умных указателей, таких как std::shared_ptr<A> a
, ->
является функцией-членом класса shared_ptr
.
Обоснование: целевая аудитория этого FAQ не пишет умные указатели.Им не нужно знать, что ->
действительно называется operator->()
или что это единственный метод доступа к элементу, который может быть перегружен.