![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| brb |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 7.1.2003 Репутация: нет Всего: нет |
Fantasist
В стиле С все понятно и прозрачно до слез... Про ++
это в стандарте С++? Просто спрашиваю. Догадаться можно, но не очевидно, впочем, это относится исключительно ко мне! Про размер указателя. В Ветхом Завете (а я и есть ветхозаветник) Керниган и Ричи писано, что для определения размера есть sizeof(). В Новом(читай Страуструп) я не помню НИЧЕГО отрицающего Ветхий. Ни в том ни в другом я не помню ни слова про отладчики, а по сему все разговоры про размер указателя определенный отладчиком считаю ЕРЕСЬЮ!!! Для особо еретичных рекомендую вместо сожжения на костре выполнить:
Что же может быть красивее старого доброго С...однострочный комментарий // из ++ --------------------
Сказки - удивительная вещь! Самое удивительное, что в них верят только маленькие дети, которым их рассказывают мамы и мамы, которым их рассказывают подросшие дети. |
||||
|
|||||
| Fantasist |
|
|||
|
Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
Ага. У нас что, в FAQ ничего про это нету? Такие приведения в новом стиле были введены по нескольким причинам. Одна из них - удобочитаемость. То есть такое преобразование легко найти в тексте, и более понятно, что этим преобразованием ты хотел добиться. То есть: reinterpret_cast - преобразование чего угодно к чему угодно. Хорошим стилем считается, чтобы преобразований подобного рода было в коде поменьше. static_cast - преобразование по правилам приведения. То с помощью тех преобразований, которые определенны в языке, или оперделены пользователем. Но тут я гарантировать за правильность объяснения не поручусь dynamic_cast - преобразование для приведения указателей на пользовательские типы (классы, структуры), с использованием Run-Time Type Information (если оно поддерживается компилятором). Класс к указателю на который приводиться какой-то указатель должны содержать как минимум один виртуальный метод, так как предполагается, что RTTI храниться в таблице виртуальных методов. То есть для: dynamic_cast<A*>(b) class A* должен содержать виртуальный метод (b, cоответсвенно, тоже указатель). const_cast - используется исключительно для снятия атрибута const и volatile, и больше ни для чего другого. Это сообщение отредактировал(а) Fantasist - 19.2.2003, 02:29 -------------------- Волны гасят ветер... |
|||
|
||||
| brb |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 7.1.2003 Репутация: нет Всего: нет |
Китайский язык тоже был разработан, причем, во множестве вариантов, весьма далеких один от другого, с целью удобочитаемости. Как показала практика, удобочитаемым он оказался только для китайцев. К тому же, вышеупомянутый язык легко обнаруживается в любом тексте. К сожалению, опять же, только китайскочитающими специалистами. И, соершенно очевидно, чего хотели добиться создатели китайского языка - чтобы в дальнейшем, миллиардное население решало демаграфические проблемы посредством языкознания. Теперь серьезно. Раз сделали, значит так должно быть лучше, но к этому тоже нужно время чтобы привыкнуть. Вот тогда, действительно станет и проще и понятнее и удобочитаемей. Имея привычку к классическому С, нахожу его и удобным, и легко находимым, и понятным, и удобочитаемым. Т.е я, по-видимому, говорю на древне-китайском Это сообщение отредактировал(а) brb - 19.2.2003, 06:50 --------------------
Сказки - удивительная вещь! Самое удивительное, что в них верят только маленькие дети, которым их рассказывают мамы и мамы, которым их рассказывают подросшие дети. |
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
К сожалению классический С не поддерживает парадигмы ООП, которые вызвали, например, появление такого оператора dynamic_cast. А необходимость поддержки написания безопасного и повторно используемого года привели к тому, что С++ по сравнению с С стал языком более строгим и типизированным языком. Поэтому сейчас будет ошибочным считать, что С++ -это всего лишь С с классами (как это было на заре появления С++) . Это совсем другой язык и дальнейшее развитие его продолжается. Тут недавно проскользнула информация, что Borland и Microsoft предоставили в комитет по стандартизации свои варианты по организации поддержки в С++ компонентной модели. -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| brb |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 7.1.2003 Репутация: нет Всего: нет |
А вот это уже довод! С безусловно имеет гораздо больше степеней свободы, впочем для того и было сделано и именно поэтому я так и не подружился с Паскалем. Vyacheslav, Вы меня убедили. --------------------
Сказки - удивительная вещь! Самое удивительное, что в них верят только маленькие дети, которым их рассказывают мамы и мамы, которым их рассказывают подросшие дети. |
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
А я в свое время вынужден перейти с Паскаля (того самого первоначального от Вирта) на С, когда понял, что у меня больше времени уходило на разработку приемов по обману компилятора, чем на саму задачу (автоматизация экспериментов: ДВК, RT-11SJ). Первое впечатление от С после Паскаля - это чувство полной свободы.
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| brb |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 7.1.2003 Репутация: нет Всего: нет |
И не кажется ли Вам, что ++ эту свободу отбирает?
А я перешел на С с Ассемблера. Теперь, я бы назвал С АСМ++ Это сообщение отредактировал(а) brb - 20.2.2003, 23:41 --------------------
Сказки - удивительная вещь! Самое удивительное, что в них верят только маленькие дети, которым их рассказывают мамы и мамы, которым их рассказывают подросшие дети. |
|||
|
||||
| sergeeff |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 19.5.2002 Репутация: нет Всего: нет |
Тип то привести можно, так вы мне что предлагаете по всей программе таскать каким то образом type_cast приведение в левой части? На фиг такое использование указателя на класс. Вся идея и состоит в том, чтобы где-то в начале определится (программно) указателем на какой класс является текущий указатель и далее безболезненно пользоваться вызовом типа C->F1(...). Насчет размера указателя на класс - под Wintel это действительно пока что 4 байта |
|||
|
||||
| brb |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 7.1.2003 Репутация: нет Всего: нет |
Глубокоуважаемый, товарищ sergeeff!
Во-первых, сообщаю Вам, что обсуждался не вопрос удобства (в Вашем конкретном случае виртуальная функция - лучшее решение, как и указали другие более грамотные товарищи Во-вторых, посредством макро это все можно красиво и понятно спрятать, дабы в дальнейшем
А указатель он и в Африке указатель, несмотря на что он указывает, его sizeof() от этого не меняется. --------------------
Сказки - удивительная вещь! Самое удивительное, что в них верят только маленькие дети, которым их рассказывают мамы и мамы, которым их рассказывают подросшие дети. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |