Это странный вопрос, если предположить, что речь идет о встроенном ->
.Это звучит как «какая разница между молотом и яблоком».Обычно вопрос о «разнице» применяется, когда два варианта, по крайней мере, несколько взаимозаменяемы, оба применяются одновременно.Поэтому люди спрашивают о «разнице», чтобы решить, какой вариант использовать.Это не тот случай, здесь.
Нельзя одновременно указывать a->height()
и a.height()
.Только один из двух может быть действительным, в зависимости от типа a
.Т.е. у вас нет выбора, какую версию использовать.Первый (с ->
) применим, если левая часть является указателем на объект.Второе (с .
) применимо только в том случае, если слева находится само значение объекта.Итак, это все, что нужно.
->
- это просто сокращение для комбинации унарных *
и .
, что означает, что когда a
является указателем, a->height()
эквивалентно(*a).height()
.Итак, более разумный вопрос был бы о разнице между a->height()
и (*a).height()
.И ответ: нет никакой разницы (опять же, пока мы рассматриваем встроенный ->
)