Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
fredwriter
7 / 7 / 1
Регистрация: 17.10.2009
Сообщений: 279
#1

Что за оператор ->? - C++

21.09.2011, 22:17. Просмотров 913. Ответов 7
Метки нет (Все метки)

Здравствуйте, мой вопрос поместился в заголовок, но я всё же задам его и в сообщении: что за оператор ->?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6548 / 3968 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
21.09.2011, 22:23     Что за оператор ->? #2
оператор доступа к мемберам объекта через указатель на объект
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
21.09.2011, 22:25     Что за оператор ->? #3
C++
1
2
3
4
SomeClass var1;
SomeClass *var2 = new SomeClass;
var1.someFunction();
var2 -> someFunction();
Простейший пример.
co6ak
Кошковед
 Аватар для co6ak
406 / 499 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
21.09.2011, 22:25     Что за оператор ->? #4
если объест создан статически, то используется "."
если динамически - "->"

надеюсь не ввожу в заблуждение
Jupiter
Каратель
Эксперт C++
6548 / 3968 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
21.09.2011, 22:30     Что за оператор ->? #5
Цитата Сообщение от co6ak Посмотреть сообщение
если объест создан статически, то используется "."
если динамически - "->"
это в общем случае, возможен вариант
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
struct mystruct {
    int i;
}; 
 
int main() 
{
    mystruct t;
    mystruct* ptr_t = &t;
    ptr_t->i = 100500;
    std::cout << t.i << std::endl;
}
Gepar
 Аватар для Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,516
21.09.2011, 22:42     Что за оператор ->? #6
Ну собственно это короткий вариант обращения к объектам класса для указателей.
Допустим есть класс Test с public объектом object, так вот если в main мы сделаем указатель на Test
C++
1
Test *test=new Test; // new Test означает что память выделена под класс Test
то для обращения к object через этот указатель нужно его разименовать, а потом обратиться к объекту класса, те:
C++
1
(*test).object
скобки нужны потому что у точки больший приоритет чем у звёздочки (разименования), чтобы упростить всё это дело и не писать каждый раз эту длинную форму со скобками для указателей и сделали операцию стрелка:
C++
1
test->object
По началу немного непривычно что для указателей на класс нужно использовать стрелку, иначе - точку, но привыкаешь к этому быстро да и компилятор в случае чего показывает где ошибка.
Vlad_IT
 Аватар для Vlad_IT
1438 / 344 / 16
Регистрация: 03.04.2010
Сообщений: 2,095
21.09.2011, 22:51     Что за оператор ->? #7
fredwriter, Можно сказать что это доступ к ссылочному объекту, или я не так выразился. Кодом будет яснее.

Если так объявлен объект.
C++
1
SommeClass s;
то вызов его метода будет так
C++
1
s.Method();
А если объявлен так
C++
1
SommeClass* s;
то будет так
C++
1
s->Method();
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.09.2011, 23:53     Что за оператор ->?
Еще ссылки по теме:

Что означает оператор %= ? C++
Что за оператор typedef? C++
Что за оператор param =:: value; C++
Что делает этот оператор C++
Что такое оператор блока? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
fredwriter
7 / 7 / 1
Регистрация: 17.10.2009
Сообщений: 279
21.09.2011, 23:53  [ТС]     Что за оператор ->? #8
Спасибо всем.
Yandex
Объявления
21.09.2011, 23:53     Что за оператор ->?
Ответ Создать тему
Опции темы

Текущее время: 11:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru