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

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

Войти
Регистрация
Восстановить пароль
 
rumfelow
0 / 0 / 0
Регистрация: 17.08.2015
Сообщений: 22
#1

Оператор селектор -> - C++

17.08.2015, 11:09. Просмотров 513. Ответов 11
Метки нет (Все метки)

Обьясните, пожалуйста, работу оператора селектор -> Что он делает? Для чего нужен? Как вообще с ним работать. Если можно с примером. Спасибо.
 Комментарий модератора 

Запрещено использовать нецензурные выражения в любом виде, оскорблять других участников форума, умышленно использовать выражения, противоречащие правилам русского языка, в том числе "олбанский" язык.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.08.2015, 11:09     Оператор селектор ->
Посмотрите здесь:

C++ Написать программу, содержащую оператор оператор for для счета от 2 до 5 через 1
C++ оператор if
Условный оператор, оператор ввода/вывода; плоскость и принадлежность точки C++
Применяя оператор цикла FOR вычислить y. Оператор if в теле цикла не использовать. Значение m и n вводить с клавиатуры. C++
C++ Селектор
C++ Оператор break как оператор go to next
C++ Оператор while
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
17.08.2015, 11:18     Оператор селектор -> #2
Доступ к члену класса через указатель на объект класса.
C++
1
2
3
4
5
6
7
struct A
{
   int a;
};
 
A* obj = new A();
obj->a = 1;
hoggy
5746 / 2328 / 419
Регистрация: 15.11.2014
Сообщений: 5,192
Завершенные тесты: 1
17.08.2015, 11:23     Оператор селектор -> #3
Цитата Сообщение от rumfelow Посмотреть сообщение
Что он делает?
как и любой другой оператор он сделает ровно то,
что вы сами для него запрограммируете.

например, он может послать вам рождественскую открытку по почте.

хотя обычно стрелочка - это доступ к ресурсу.

примеры:

C++
1
2
some* p = getSomePtr();
std::cout<< p->data<<std::endl;
C++
1
2
3
4
std::shared_ptr<some> smart 
    = std::make_shared<smart>();
 
std::cout<< smart->data << std::endl;
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
17.08.2015, 11:33     Оператор селектор -> #4
hoggy, Все же не любой.
The following operators cannot be overloaded:
.
.*
::
?:
nor can the preprocessing symbols # and ## (Clause 16).
engine76
2 / 2 / 0
Регистрация: 04.03.2014
Сообщений: 65
17.08.2015, 11:39     Оператор селектор -> #5
Доступ к членам структуры, класса через указатель.
C++
1
2
3
4
5
6
7
8
9
10
11
12
class myClass
{
public:
void printMessage()
{
std::cout << "message" << std::endl;
}
};
myClass* ptr = new myClass;
ptr->printMessage();
 
delete ptr;
Цитата Сообщение от ForEveR Посмотреть сообщение
A* obj = new A();
Может я чего не понимаю, но зачем тут круглые скобки при выделении памяти?
hoggy
5746 / 2328 / 419
Регистрация: 15.11.2014
Сообщений: 5,192
Завершенные тесты: 1
17.08.2015, 11:46     Оператор селектор -> #6
Цитата Сообщение от ForEveR Посмотреть сообщение
Все же не любой.
представленные вами операторы так же делают ровно то,
что для них запрограммировали.

вы лишь никак не можете изменить эту логику.

Добавлено через 1 минуту
Цитата Сообщение от engine76 Посмотреть сообщение
Может я чего не понимаю, но зачем тут круглые скобки при выделении памяти?
ни за чем.

просто так читабельнее - смахивает на вызов конструктора.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12537 / 7099 / 797
Регистрация: 27.09.2012
Сообщений: 17,521
Записей в блоге: 2
Завершенные тесты: 1
17.08.2015, 12:37     Оператор селектор -> #7
Цитата Сообщение от hoggy Посмотреть сообщение
ни за чем.
Со скобками и без - будут разные способы инициализации.
http://rextester.com/MHHRI22942
DrOffset
6820 / 4031 / 924
Регистрация: 30.01.2014
Сообщений: 6,847
17.08.2015, 12:44     Оператор селектор -> #8
Цитата Сообщение от Croessmah Посмотреть сообщение
будут разные способы инициализации.
Для POD.
Для неPOD в любом сучае (со скобками и без) вызывается конструктор по умолчанию.
John Prick
757 / 690 / 124
Регистрация: 27.07.2012
Сообщений: 1,975
Завершенные тесты: 3
17.08.2015, 12:45     Оператор селектор -> #9
Цитата Сообщение от Croessmah Посмотреть сообщение
Со скобками и без - будут разные способы инициализации.
Интересно, это "стандартная" фича?
DrOffset
6820 / 4031 / 924
Регистрация: 30.01.2014
Сообщений: 6,847
17.08.2015, 12:49     Оператор селектор -> #10
Цитата Сообщение от John Prick Посмотреть сообщение
Интересно, это "стандартная" фича?
Да.
http://en.cppreference.com/w/cpp/lan...initialization
Наш случай - это пункт 4.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12537 / 7099 / 797
Регистрация: 27.09.2012
Сообщений: 17,521
Записей в блоге: 2
Завершенные тесты: 1
17.08.2015, 12:58     Оператор селектор -> #11
Цитата Сообщение от DrOffset Посмотреть сообщение
Для POD.
Так в примере ForEveR и есть POD тип, в чем проблема то?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.08.2015, 12:59     Оператор селектор ->
Еще ссылки по теме:

C++ Почему обращение к методам осуществляется через оператор прямого доступа, а не через оператор указателей->?
C++ В Delphi есть оператор cost i of. и т.д. Есть ли в C++ такой же оператор?
C++ Для чего нужен оператор двоеточие, если два двоеточия - это оператор расширения области видимости
C++ Как перегрузить оператор<< и оператор>> ?

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

Или воспользуйтесь поиском по форуму:
hoggy
5746 / 2328 / 419
Регистрация: 15.11.2014
Сообщений: 5,192
Завершенные тесты: 1
17.08.2015, 12:59     Оператор селектор -> #12
Цитата Сообщение от John Prick Посмотреть сообщение
это "стандартная" фича?
ага.

C++
1
2
3
int v; //<--- мусор
 
int v = int(); //<--- явный вызов конструктора пропишет нолик
Yandex
Объявления
17.08.2015, 12:59     Оператор селектор ->
Ответ Создать тему
Опции темы

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