2016-06-18 5 views
-1

Причина, по которой задается этот довольно «глупый» вопрос, заключается в том, что я действительно не знаю, как это сделать или как искать здесь здесь. Вопрос касается оператора '->', который может использоваться для доступа к методам и переменным из ссылок на объект. Пример:Оператор '->'

exClass* exObjPtr = new exClass; 
exObjPtr -> exMethod(); 

Я не знаю, что это - называется оператор (>), и я не могу Google это или найти его в то время как поиск на SO, потому что Пустоты будет Alow жгучей для специальной carachter «> ».

ВОПРОСЫ:

  1. Где я могу найти более подробную информацию об этой теме?
  2. Какова операция.
  3. Из того, что я понимаю до сих пор, операция (->) является своего рода «синтаксическим сахаром» для развязывания объекта и доступа к его членам. Что такое синтаксис «не suger» для этой операции.

Извинитесь за мой новобранец за английский! Что ты для своего времени!

+0

", который может использоваться для доступа к методам и переменным из ссылок на объект." Нет, это доступ от * указателей *, а не * ссылок *. – juanchopanza

+2

1) Вне темы 2) [Здесь] (https://stackoverflow.com/questions/1580757/what-is-the-official-name-of-cs-arrow-operator) 3) [Здесь] (https: //stackoverflow.com/questions/221346/what-can-i-use-instead-of-the-arrow-operator) Вот почему вы должны поставить один вопрос на вопрос; теперь я не знаю, закрыть ли это как обман одного из вышеперечисленных или vtc как вне темы. :/(E: К счастью, hvd избавил меня от этой дилеммы :) :) –

+0

Более подробную информацию можно найти в любом курсе на C++ (и C), действительно. Оператор часто упоминается как «оператор стрелки» (http://stackoverflow.com/questions/1580757/what-is-the-official-name-of-cs-arrow-operator) ». В C, 'a-> b' - сахар для' (* a) .b'. В C++ большинство операторов могут быть переопределены, в том числе '->', что означает, что его нельзя назвать синтаксическим сахаром. –

ответ

1

Стрелка оператора. Он используется для доступа к объектам объектов, на которые указывают указатели. Как правило, вы бы просто использовать точку:

Rectangle r; 
r.length = 5; 

Но когда объект является указателем, мы делаем

Rectangle* r = new Rectangle; 
r->length = 5; 

Это сокращенная форма

(*r).length = 5; 
+0

@ Dr.Haimovitz iPhone автокоррект ... Также он не называется, что, по-видимому, просто стрелка. – acornellier

+0

членов указателей ?? –

+0

@ machine_1 О, я не очень хорош в этом, я. Исправлено! – acornellier

0

Во-первых, это называется pointers - Arrow operator (или для краткости, только стрелка)

Этот оператор работает следующим образом:

Type* a; 
Type b; 
a->method(); 
// same as (*a).method(); 
b.method(); 
+0

_ «это называется« указатели - оператор стрелки ». _ Можете ли вы предоставить какие-либо доказательства, подтверждающие это? –