![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| neutrino |
|
||||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: 1 Всего: 62 |
Приветствую!
Последний раз с С++ сидел очень давно. Вот настряпал код, на который компилятор начал ругаться:
Я так понимаю, оператор + возвращает объект класса А, а у В нет бинарного оператора = который берет справа объект класса А. Но ведь у предка В (А) есть оператор = который берет справа А, а по скольку объект В является всегда и объектом А, то все должно сработать. Что я не догоняю? Необходимо, чтобы это все скомпилилось. Пока реализации нет, но это и неважно. -------------------- The truth comes from within ... Покойся с миром, Vit |
||||
|
|||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
neutrino
|
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
происходит это, потому что объекту производного класса нельзя присваивать объекты базового. Можно наоборот, но тогда произойдёт "срезка" объекта.
Это сообщение отредактировал(а) zim22 - 20.10.2009, 15:17 |
|||
|
||||
| neutrino |
|
||||||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: 1 Всего: 62 |
На самом деле, если рассматривать перегрузку оператора, как перегрузку функции, то эти аргументы не катят. Ведь я могу использовать скажем перегруженный оператор = с А для переписывания полей А, а для переписывания полей Б уже использовать оператор = перегруженный в Б. Что-то типа:
Но по аналогии с функциями это дело не компилится. Значит мне нужно перегружать в В оператор = который берет как аргумент объект класса А. Но ведь тогда получается совсем лишний и дурацкий оператор в В:
Как правильно разрулить ситуацию??? То есть в потомках ВСЕГДА надо перегружать все операторы =, которые были перегружены в предке??? Что-то какашка какая-то или я опять не понял... Добавлено через 1 минуту и 24 секунды
Да, как-то об этом не подумал. -------------------- The truth comes from within ... Покойся с миром, Vit |
||||||
|
|||||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Ну в принципе да. Но это нормально. Представим ситуацию.
оператор хоть и написан в классе A, он скрыт в классе B, это логично, потому-что этот оператор НЕ ЯВЛЯЕТСЯ оператором присваивания для класса B, он не присваивает члены класса B, он работает для класса A, вот и прекрасно, пусть продолжает работать Это сообщение отредактировал(а) azesmcar - 20.10.2009, 15:51 |
||||
|
|||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: 1 Всего: 62 |
Спасибо за объяснения!
[офтоп] Вот еще почему Java рулит, так это потому, что там нет перегрузки операторов и подобной хрени. Ожидал от C# того же, но оказалось, что и там такая же какашка. По моему перегрузка операторов только путает больше. Исключением может быть уж очень интенсивное программирование каких-нибудь матриц или комплексных чисел где операторы сократят код. Хотя на моей практике в 6 лет таких примеров не было. ИМХО это лишнее. [/офтоп] -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
ещё можно написать внутри B такое:
тогда дублирования кода не будет Это сообщение отредактировал(а) maxim1000 - 20.10.2009, 16:14 -------------------- qqq |
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: 1 Всего: 62 |
maxim1000, Спасибо, то что надо!
-------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| niXman |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 211 Регистрация: 4.7.2009 Репутация: 0 Всего: 0 |
Не представляю языка программирования без перегрузки операторов. Это огромное удобство, навязать объекту нужное тебе поведение.
Было. Просто вы не знали что это можно сделать намного проще, и сократить код. --------------------
if ( !c++ ) { *power--; this->wussiness += 10;} |
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: 1 Всего: 62 |
niXman,
Нет. Не было. В основном я разрабатывал инфраструктуру. -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: 1 Всего: 62 |
I кстати, как можно сократить код с помощью перегрузки операторов? Ведь все, что можно это: вместо: someObject.add(anotherObject); написать: someObject += anotherObject; Может быть, если кто-то интенсивно использует какую-нибудь область математики v программировании, тo ему стоит перегрузить операторы. Например в линейной алгебре может оказаться полезно писать умножение через всеm понятный оператор *, а не функцию multiply. Но поскольку я в основном разрабатывал каждый раз что-то для другой области, то мне не стоилo перегружать операторы. И вообще интересный факт, действительно почему в Java операторы нельзя перегружать? Почему разработчики этого языка не добавили такую возможность? Я думаю, что код, который использует перегрузку операторов менее поддерживаемый. -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
http://stackoverflow.com/questions/77718/j...erator-overload и ещё миллион ссылок в гугле |
|||
|
||||
| niXman |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 211 Регистрация: 4.7.2009 Репутация: 0 Всего: 0 |
В комментарии к твоей репутации UnrealMan ответил. --------------------
if ( !c++ ) { *power--; this->wussiness += 10;} |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
||||
|
||||
| Kipter |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 114 Регистрация: 2.5.2006 Репутация: нет Всего: нет |
Перегрузка операторов применяется далеко не для простоты разработчика класса, а для простоты работы с этим классом - "клиентов".
В основном перегрузку операторов делают в качестве "интерфейса" объектов, и если вы наследуете класс с интерфейсом предназначенным на конечное использование то логично было бы что придется перегружать интерфейсные функции класса. Если вам приходится наследовать класс с перегруженными операторами и появляется желание не перегружать их в классе-потомке, то следует задуматься а правильно ли вы спроектировали класс-предок и класс потомок =) Что делает такого потомок что для него у вас нет желания перегрузить операторы вновь? Может должно быть наоборот Предок должен быть потомком а потомок предком, или потомок вообще должен быть инкапсулирован в предок и т д Механику перегрузки операторов придумывали не идиоты, все очень логично если вы понимаете что это не просто функции члены =)
Знаете, если вы работаете на себя и перегрузка операторов для классов у вас нигде не оговорена в контракте или в соглашении группы разработчиков - то вас С++ НЕ ЗАСТАВЛЯЕТ пользоваться перегрузкой операторов, также как и не заставляет обязательно делать многое другое! (например не заставляет обязательно перехватывать все исключения) Вы можете также как и в Java создавать функции члены (Add, Summ, Equa или как вы там еще их называете =) ) и пользоваться ими себе на здоровье =) лично мне редко приходиться перегружать операторы в повседневной работе, и самое често что я перегружаю это << и >> или & для потоковых данных или сериализации. А по поводу Java - очень глупо сказано, не в том месте сравниваете языки =) Да и сравниванием не рекомендую заниматься для разных задач они =) и каждый в своей сфере хороши. |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Тогда Fortran IV должен вообще конкретно рулить - в нем вообще ничего нет |
|||
|
||||
| neutrino |
|
||||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: 1 Всего: 62 |
Kipter,
Согласен полностью.
Нu не надo только переиначивать мною сказанное. Я не на столько категоричен. ОК. Народ, я вас понял. Просто я сейчас учу курс по ООП Только вот толковых там очень мало. Правильно. РОвно также каk i ассемблер ничегo не требует. Ну таk нa нем i ООП никто не пишет (кроме маньяков конечно). ОК. Прокомментирую тот комментариj
У меня был просто вопрос касательно того как правильно в моем случае перегружать оператор. Еще раз повторюсь, чтo пример не из реальной жизни, а задание с курса ООП. И так, u класса А есть какие-тo поля. Класс Б, который наследуется от А не добавляет никакиh данных а только расширяет функционал. Именно поэтому нет смысла перегружать оператор у потомка. Такая ситуация вероятна. Так вот единственный кто ответил по делу был конечно максим1000 за что емu большой респект (я думал оn только в алгоритмах ас). А осилил ли я операторы? Думаю, что не настолько, чтобы ответить нa поставленныj мною вопрос. Нo это не имеет отношения k Java. Java действительно больше подходит для ООП и частично потому, что таm неt перегрузки операторов, как я и написал в том посте на который АнриалМэн поставил мне -. Я вот только не понимаю какую смысловую нагрузку несет в себе егo комментарий. Треп. -------------------- The truth comes from within ... Покойся с миром, Vit |
||||
|
|||||
| xvr |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Тогда посмотри в сторону template'ов и метапрограмирования. После этого перегрузка операторов покажется детским лепетом
Если нужен 'правильный' ООП - смотрите Smalltalk или Simula |
||||||
|
|||||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: 1 Всего: 62 |
Вот именно! Разве волосы на голове должны вставать дыбом от хорошего кода? Кенн называет такой код - "код с душком". Хороший код должен быть легко поддерживаем и следовательно понятен. И как раз для этого вместо темплейтов в Java/C# введены generic классы.
Ладно, давайте сворачивать дискуссию. Это сейчас перейдет в религиозную войну. -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 2 Всего: 160 |
Сучковатой бы шваброй за такое этого лектора. Что значит "более поддерживаемый"? Не знаю, кто такой Кенн, но в этом вопросе я с ним солидарен (хоть и не совсем). Ну, не совсем так. Всё действительно стоящее из этих языков уже взято. Только не в С++ и не в Java... -------------------- |
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: 1 Всего: 62 |
kemiisto, Ну все, понеслась
-------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
||||
|
||||
| UnrealMan |
|
||||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 722 Регистрация: 30.3.2006 Репутация: 27 Всего: 32 |
Почему add у тебя эквивалентно +=, а не +? И почему для встроенных типов я должен использовать +=, а для пользовательских - add?
Перегруженные операторы много где используются помимо математических расчётов. В частности, перегрузка *, ->, ++, ––, +, –, () позволяет использовать пользовательские итераторы и функторы подобно сущностям встроенных типов. Единый синтаксис снимает необходимость дублировать код или использовать адаптеры для приведения одной формы синтаксиса к другой.
Ты проверял что ли? Или всё твоё "я думаю" основано на самоубеждении, что жаба - идеальный ЯП, и раз там нет перегрузки операторов, то перегрузка операторов - это зло? А какое отношение Java имеет к разделу C/C++? Для фанатов с лозунгами типа "жаба рулит", "линукс рулит" и т.п. есть флеймерские разделы.
Что за гениальный бред? Каким образом операторный синтаксис вызова функции связан с поддержкой языком ООП?
Трёп как раз-таки у тебя: сам едва разобрался с основами перегрузки операторов, а уже горазд делать авторитетные заявления о дизайне ЯП. |
||||||||||
|
|||||||||||
| kemiisto |
|
||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 2 Всего: 160 |
Smalltalk действительно интересен. Эдакая игрушка, язык концепция. Всё есть объект. Концептуально просто, но практическая применимость такого подхода ограничена. Хотя ООП, не возведённое в абсолют, интерес представляет. Когда я говорил, что всё действительно стоящее взято, то подразумевался Вирт (кто-то смоневался? Прежде чем продолжит, следует "обелить" Страуструпа. Он в общем-то не так уж плохо поступил с С, тоже добавил только самое существенное. По началу. А потом понеслось. Да и у С++ есть огромный минус - неимоверно трудно реализовать прозрачную поддержку идей ООП в языке без модулей. Но... Вернёмся к Вирту. Во время своего годичного отпуска (sabbatical) в 1976-1977 Вирт был в Xerox PARC. Видел ли он Смолток? Да. Быть в конце 70-х в Xerox PARC и не видеть Смолток - это что-то из разряда фантастики. Но об этом чуть позже. Куда больше в тот момент его заинтересовал другой язык - Mesa. Так как там было то, чего так недоставало Pascal'ю - там были модули. Mesa был наследником Pascal и поэтому Вирту не потребовалось много времени, чтобы разобраться, что к чему. Modula-2 стала результатом. Концепция модульности во всей своей красе. И ещё Виртом с коллегами была создана рабочая станция Lilith... В 84-85 годах Вирт во второй раз приезжает в Xerox PARC. Вот теперь предметом его пристального внимания становится рабочая станция Cedar. Она сделана сотрудниками Xerox PARC и там оконная система реализована на Smalltalk. В Oberon "перетащили" только самую суть - появились расширяемые записи.
и поля-процедуры:
Подробнее можно почитать в трудах HOPL III. -------------------- |
||||
|
|||||
| neutrino |
|
||||||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: 1 Всего: 62 |
UnrealMan, Сбавь тон своих авторитетных постов. Что-тo от твоего поста столько пены, чтo приходится монитор протирать.
У нас один девелопер использовал перегрузку операторов в многопротокольной системе. Так вот теперь, когда надo разбираться в этоm фреймворке, там черт ногу сломит. Потому, что въехать когда что и где у него вызывается из-за перегрузки операторов очень не просто. Я привел аргумент, что в Java (нe Жаба) как раз был сделан упор на то, чтобы код был легко поддерживаемый.
Я не знаю. В одном из моих постов v тэгах "оффтоп" я ляпнул что-то прo Java. Видимо зря. Я был уверен, что тэг "оффтоп" в темe должен быть проигнорирован. Нo как оказалось есть некоторые сишники, которых дo глубины души задел этот оффтоп и они снесли мне репу
ОК, многоуважаемый мегасуперавторитетный моСК С++, узри в постах выше, что говорится о задании по ООП...
Не перевирай моих слов i не экстраполируй мое мнение. Я ни словом не заикнулся o дизайне ЯП. Я лишь сказаl свою ИМХу, что С++ менее приспособлен к ООП, нежели Java/C#. [оффтоп] П.С. А линукс действительно рулит [/оффтоп] -------------------- The truth comes from within ... Покойся с миром, Vit |
||||||
|
|||||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Это девелопер виноват Перегрузки операторов в C++ используются сплошь и рядом и дизайн библиотек, в которых их перегружали от этого ничуть не пострадал. Для примера возьмите boost. Но вопрос и меня заинтересовал, как может наличие чего-либо испортить язык программирования? Даже если это Г. Не используйте, ради бога..кто же вас заставляет? Никто ведь не заставляет людей писать макросы. Язык дает возможности, которыми надо пользоваться с умом. |
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: 1 Всего: 62 |
[яуоте=азесмцар, 27.10.2009, 14:55, пост2006182]Но вопрос и меня заинтересовал, как может наличие чего-либо испортить язык программирования? Даже если это Г. Не используйте, ради бога..кто же вас заставляет? Никто ведь не заставляет людей писать макросы. Язык дает возможности, которыми надо пользоваться с умом.[/яуоте]
Потому что приходится производить лишний контроль над девелоперами, чтобы они этo Г. не использовали. Я не знаю как u всех, нo у нас порядочно ###кода, которыj надо поддежвать, i поверьте этo сомнительное удовольствие... -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 2 Всего: 160 |
azesmcar, в очередной раз ты сам себе противоречишь.
Вот ты пишешь, что Чем же это он так провинился? Если язык позволяет писать быдлокод, 99% будут писать именно так. Ну, во-первых, комментарий чуть выше. А во-вторых, я не говорю, что С++ портит само наличие перегрузки операторов, обобщёного программирования и т.п. Его портит из рук вон плохая реализация принципиально полезных концепций. Перегрузка сделана через одно место, про темплейты я (в очередной раз) молчу. Добавлено через 1 минуту neutrino, использую синонимы. Например, быдлокод. -------------------- |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Ну так это во всех языках и во всех сферах так, дизайн можно испортить много чем, в том числе и обыкновенными функциями, теперь и функции запрещать? Добавлено через 2 минуты и 50 секунд где это ты противоречие заметил? не надо голословных утверждений, пальцем покажи.
Любой язык это позволяет. Хочешь быдлокод на Erlang-е или ColdFusion-е? У меня тут на работе 50 индусов день и ночь трудяться, ты только скажи на каком языке тебе быдлокод показать. |
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: 1 Всего: 62 |
[Б]азесмцар[/Б],
[яуоте=азесмцар, 27.10.2009, 15:10, пост2006207]Ну так это во всех языках и во всех сферах так, дизайн можно испортить много чем, в том числе и обыкновенными функциями, теперь и функции запрещать?[/яуоте] Я понимаю. Конечно я и нa C# могu такой быдлокод (спасибо, kemiisto) написать... Попробую провестi аналогию. Ест' автомат калашникова. I вот вышлa улучшенная версия с курком, при нажатиi на который, автомат нчнает стрелять только по командирам. Вот такой хитрый автомат с распознаванием звания... И вот новая операция Цахал в секторе Газа. Наши все с теми же "веслами" (М16), а ХАМАСовцы с новыми калашами. Все бы ничего, так только ХАМАСу никто не объяснил толком как пользоваться этиm курком. А оказывается, если командиров противникa по близостi нет, тo оn начинает мочить своих командиров. Вот i все. Сионисты опять победили. -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Следую этому примеру, C++ - автомат с распознаванием звания, но вы находите эту функцию никому не нужной и говорите что вот такой хитрый автомат хуже предыдущего, потому что там есть функция, которой можно застрелить и своих командиров тоже. А вы не стреляйте по своим
Кто в этом виноват? либо читайте учебники, либо не трогайте курок, либо идите под трибунал за расстрел своих офицеров. Обыкновенным курком тоже можно своего офицера убить. Это сообщение отредактировал(а) azesmcar - 27.10.2009, 16:30 |
|||
|
||||
| kemiisto |
|
||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 2 Всего: 160 |
Я писал ниже. Если ты не понимаешь, я не виноват. Попробую ещё раз.
Потенциально опасная (в любом смысле этого слова) возможность рано или поздно будет кем-нибудь использована. Помнишь знаменитое ружьё, которое обязательно выстрелит? Вот тем и плох язык, в котором слишком много "граблей", на которые можно наступить. Так понятнее? Этот пример действительно хорош. Только он в мою пользу. -------------------- |
||||
|
|||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Веский аргумент. Ты уверен? Давай я тебе по китайски поясню (или сделаю вид что поясню) и если ты меня не поймешь - я не виноват. Ну и где ты тут противоречие? Я говорю то, что всегда говорил, покажи мне на какой строчке я себе противоречу. это ты только хочешь чтобы он в твою пользу был. В чем же тут твоя польза? Я что, говорил что C++ к этому подталкивает? Я говорил что быдлокод можно писать на любом языке, в том числе и на C++. И поверь мне, для индусов (они кстати настоящие) нет никакой разницы на чем быдлокодить, код одинаково плох. Если человек умеет программировать - его код легко читать и сопровождать, если же нет, не важно на каком языке он писал, он все равно испоганит код. |
|||
|
||||
| UnrealMan |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 722 Регистрация: 30.3.2006 Репутация: 27 Всего: 32 |
Что ты там вытворяешь перед монитором, меня не касается. Беситься из-за тебя? Высокого же ты о себе самомнения И в чём именно сложности? В незнании правил?
Кем именно поддерживаемый? Я, например, вряд ли разберусь в коде на Java, если совсем не приложу никаких усилий для изучения этого языка. У тебя специальная функция-член объявляется неявно и скрывает такую же функцию в базовом классе. Даже если бы в C++ вместо operator= ту же самую операцию выполняла какая-нибудь специальная неоператорная функция-член (скажем, assign), то ничего бы не изменилось. И, кстати, если тебе вдруг захочется инициализировать объект производного класса объектом базового, то инициализация копирующим конструктором базового класса, про который ты почему-то забыл, тоже не будет работать (причём в случае использования C++03 using там тебе уже не поможет). Т.е. здесь корень проблемы кроется не в перегрузке операторов как таковой, а в спецификации специальных функций, выполняющих копирование. Ты хоть это-то понял? Возможность перегрузки операторов относится к дизайну ЯП. Так что всё-таки заикнулся. |
||||
|
|||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: 1 Всего: 62 |
azesmcar,
Если будет больше возможностей сделать ошибку, то это есть плохо. Особенно, когда персонал недостаточно квалифицирован. Это факт. С этим спорить я думаю ты не будешь. Теперь посмотри на сложности в темплейтах, множественное наследование и т.д. и т.п. Т.е. граблей в С++ гораздо больше, чем в Java/C#. Конечно бы ты был прав - не хотите не используйте. Не умеете не беритесь. Но кто так делает? У меня был тим лид (его уволили год назад) дык он начитался про паттерн State и реализовал весь Error Handling через него (даже эксепшены все нафик выкинул). Его то уволили, а кто разбирал всю эту мусорку? Догадался? UnrealMan, А вы, господин, у меня в игноре за ваше хамство, так что сосите ноги. -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| firstone |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 25.9.2007 Где: Кровью залитая Св ятая Земля Репутация: нет Всего: 7 |
Золотые слова. Только вот если емu возможности поурезать, быть может и меньше быдлокодить будет. --------------------
В программировании я конфуцианец. В жизни я либерал-демократ. В душе я буддист.Добавлено через 1 минуту и 9 секундА на самом деле я лентяй. |
|||
|
||||
| azesmcar |
|
||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Профессиональный аппарат дает больше возможностей чем мылцница, и ошибиться при использовании намного легче, но это не значит что функции, которые он предоставляет не нужны вообще, он дает возможность ручной настройки, что в свою очередь дает широкие возможности использования разбирающимся людям. Неквалифицированным людям писать код ЗАПРЕЩЕНО. Не важно на чем, неквалифицированный человек испоганит код даже на бейсике.
Ничего сложного я не замечал, есть вещи которые нужно знать, вот и все. Не знаю как насчет Java (в глаза не видел), а с C# - согласен, только вот эти грабли совершенно не имеют отношения к шаблонам и операторам. Это называется антипаттерн "Золотой молот". Никакого отношения конкретно к языку программирования он не имеет, впрочем как и паттерны. А у меня индус в оракл базе поле IS_ACTIVE создал типа varchar2(255), наверное чтобы там кроме значений Y и N можно было еще и утвердительное YES OF COURSE написать, не знаю, прикажете отменить тип varchar2? Я же говорю, человек который стремиться нагадить в код полюбому нагадит, неважно на каком языке.
вполне возможно, но тогда знающие люди не смогут восползоваться этими возможностями во благо общества Это сообщение отредактировал(а) azesmcar - 27.10.2009, 22:43 |
||||||
|
|||||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: 1 Всего: 62 |
Я не могу с тобой не согласиться. Особенно как обладатель цифрозеркалки, знаю какой замечательный функционал она дает. И да, все зависит от рук. Но с другой стороны, по аналогии, если бы надо было снимать только водопады на длинной выдержке (у нас ООП), то режим "водопад" для большинства людей (девелоперов) был бы лучше, чем все навороты цифрозеркалки. Вероятно я неправ на счет операторов, но в С++ и без них граблей хватает. -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
например? Я так думаю сейчас речь пойдет о макросах (не дожидаясь отвечу). На эту тему уже была одна дискуссия, можете ознакомиться. http://forum.vingrad.ru/forum/topic-255252...ml#st_75_view_0 Это сообщение отредактировал(а) azesmcar - 27.10.2009, 23:12 |
|||
|
||||
| niXman |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 211 Регистрация: 4.7.2009 Репутация: 0 Всего: 0 |
Все верно. Так же.
Опять верно.
Ага. п.с. Иногда, такое впечатление, что все существующие ЯП создаются исключительно для того, чтоб кодить мог каждый дэбил. Вот существовал бы только С++ и ассемблер, как вы думаете, на сколько процентов меньше программеров бы существовало? --------------------
if ( !c++ ) { *power--; this->wussiness += 10;} |
||||
|
|||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
||||
|
||||
| kemiisto |
|
||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 2 Всего: 160 |
Ты сравниваешь две вещи из разных весовых категорий. А мы не о том говорим. Что принципиально невозможно написать на том же OBERON, что можно написать на С++? Правильный ответ - ничего. И вот, когда мы имеем дело с вещами одной весовой категории тут и начинается самое интересное... Что именно? А вот что! Статья из New York Times. BEHIND THE WHEEL/BMW 745i; Dazed by a Technical Knockout
На русском:
Это сообщение отредактировал(а) kemiisto - 27.10.2009, 23:34 -------------------- |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| kemiisto |
|
||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 2 Всего: 160 |
Oberon как язык программирования лишь часть одноименной ОС.
Принципиальные сомнения развеял? Добавлено через 3 минуты и 13 секунд Сейчас активно (всё относительно -------------------- |
||||
|
|||||
| niXman |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 211 Регистрация: 4.7.2009 Репутация: 0 Всего: 0 |
kemiisto, Это -
Добавлено через 4 минуты и 49 секунд
Это еще что такое? kemiisto, И вообще, можете популярно объяснить, что за ОС, которая является частью ЯП(или на оборот?). Какое применение? Где? Для чего? --------------------
if ( !c++ ) { *power--; this->wussiness += 10;} |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
пока наоборот усилили.. возник вопрос смогу ли я (под виндоус или под линукс) на обероне написать плагин например для firefox ? |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
Ага. Точно также, ка на PS1 запустить Stalker -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| kemiisto |
|
||||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 2 Всего: 160 |
mes, курсы чтения провести? У меня времени нет учить Вас азам понимания чужых текстов. Единственное, что могу сделать - выделить ключевое слово: И ведь я изначально знал, что никаких других аргументов не будет.
Читать внимательнее надо было заметку в Вики.
То есть если ты хочешь получить качественную систему - позаботься сам обо всём: железо + ЯП + ОС. Это не Джобс придумал. Здравствуйте, Евгений Ваганович! -------------------- |
||||||
|
|||||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |