Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Зачем в С++ два разных оператора . и -> ? 
:(
    Опции темы
ZZZkoderZZZ
Дата 15.3.2013, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 11.3.2013

Репутация: нет
Всего: -2



Что бы изменилось, если обращение по указателю тоже делалось оператором .  ?

Это сообщение отредактировал(а) ZZZkoderZZZ - 15.3.2013, 14:20
PM MAIL   Вверх
bsa
Дата 15.3.2013, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



были бы проблемы с умными указателями (std::shared_ptr, std::unique_ptr).
PM   Вверх
borisbn
Дата 15.3.2013, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



и с итераторами


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
ZZZkoderZZZ
Дата 15.3.2013, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 11.3.2013

Репутация: нет
Всего: -2



bsa, 
borisbn, 
 Два разных оператора были еще в языке С. Значит есть какая-то другая причина.
PM MAIL   Вверх
baldina
Дата 15.3.2013, 19:01 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



a->b это синоним (*a).b
теперь разницу видишь?
PM MAIL   Вверх
ZZZkoderZZZ
Дата 15.3.2013, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 11.3.2013

Репутация: нет
Всего: -2



baldina, 
А почему бы не писать всегда 
Код

a.b

независимо от того объект a или указатель на него?

Это сообщение отредактировал(а) ZZZkoderZZZ - 15.3.2013, 19:16
PM MAIL   Вверх
LeonidPr
Дата 15.3.2013, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 17.2.2012
Где: г. Чебоксары

Репутация: нет
Всего: 1



 затем, что в этом случае посмотрев на код вы никогда с первого взгляда не поймете
Цитата(ZZZkoderZZZ @  15.3.2013,  19:14 Найти цитируемый пост)
объект a или указатель на него?



--------------------
pkunzip.zip
PM MAIL   Вверх
baldina
Дата 15.3.2013, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



ок...
a.b vs (*a).b
a и *a это нечто разное. программисту дана возможность различать их. это существенно для языка с низкоуровневыми возможностями с одной стороны и с перегрузкой операций, с другой. язык богат. кому богатство не нужно, идут писать на basic
PM MAIL   Вверх
Alexeis
Дата 15.3.2013, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 12
Всего: 459



  Бывают еще конструкции повеселее. Например, указатель на указатель на объект. Как в этом случае обращаться к полю данных?


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
ZZZkoderZZZ
Дата 16.3.2013, 15:40 (ссылка)    | (голосов:7) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 11.3.2013

Репутация: нет
Всего: -2



Цитата(baldina @ 15.3.2013,  21:25)
кому богатство не нужно, идут писать на basic

BASIC лучше C++ хотя бы тем, что там не надо объявлять переменные.
PM MAIL   Вверх
noize
Дата 17.3.2013, 00:09 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


5.18.2
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 10.7.2010
Где: СПб

Репутация: нет
Всего: 3



Цитата(ZZZkoderZZZ @ 16.3.2013,  16:40)
BASIC лучше C++ хотя бы тем, что там не надо объявлять переменные.

Вот что по этому поводу пишет Стивен Прата, замечательные книжки по C и C++ которого я в настоящий момент читаю :
Цитата
В некоторых языках программирования, особенно в BASIC, новая переменная создаётся при первом упоминании нового имени, без явного объявления. На первый взгляд, это может показаться удобным, однако у этого способа имеется большой недостаток. Если вы допустите ошибку в написании имени переменной, то непреднамеренно создадите новую переменную. То есть в BASIC может возникнуть следующая ситуация:

CastleDark = 34
...
CastleDank = CastleDark + MoreGhosts
...
PRINT CastleDark

Поскольку имя CastleDank написано с ошибкой(вместо r напечатано n), то изменения, которые вы произведёте в этой переменной, оставят неизменной переменную CastleDark.
Ошибки подобного рода довольно трудно обнаружить, поскольу они не нарушают ни одного правила языка BASIC. Однако в C++ переменная CastleDark может быть объявлена, а написанная с ошибкой CastleDank - не объявлена. В результате, эквивалентный код  на C++ нарушит правило обязательного объявления переменных и компилятор выдаст сообщение об ошибке.


Это сообщение отредактировал(а) noize - 17.3.2013, 00:15
PM MAIL   Вверх
Dem_max
Дата 17.3.2013, 05:17 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 4
Всего: 39



Цитата(ZZZkoderZZZ @ 16.3.2013,  15:40)
Цитата(baldina @ 15.3.2013,  21:25)
кому богатство не нужно, идут писать на basic

BASIC лучше C++ хотя бы тем, что там не надо объявлять переменные.

smile 
Так тебе уже давно предложили самоудалиться из этого раздела если тебе не нравиться С++, че мозг то колупаешь ??? 


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
NoviceF
Дата 17.3.2013, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 313
Регистрация: 13.3.2012
Где: Ростов-на-Дону

Репутация: нет
Всего: 2



Цитата(noize @  17.3.2013,  01:09 Найти цитируемый пост)
Вот что по этому поводу пишет Стивен Прата, замечательные книжки по C и C++ которого я в настоящий момент читаю :


А вот, что пишет Скотт Мэйерс о программистах на basic:

"Перейти на использование istreambuf_iterator при чтении файла так просто, что даже программист Visual Basic сделает это со второй попытки"

 smile 
PM MAIL   Вверх
baldina
Дата 18.3.2013, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



Цитата(NoviceF @  17.3.2013,  10:03 Найти цитируемый пост)
со второй попытки

 smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0596 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.