|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
01.08.2012, 21:30 | #31 | |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2_Bers
Цитата:
а вот такой вполне. http://ideone.com/vMRUq
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
|
01.08.2012, 21:35 | #32 | |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2_Bers
Цитата:
http://ideone.com/ksu9M поэтому я и говорю, что термин чисто виртуальный не означает отсутствие тела. тело быть может (а может и не быть). просто нельзя создавать объекты классов с чисто виртуальными функциями. пс. и да. ЕСТЕСТВЕННО у деструктора ДОЛЖНО быть тело (с этив вроде никто не спорил), не важно, чисто виртуальный он или нет. зачем деструктор делать чисто виртуальным я уже писал. ппс. и хватит писать диструктор. destruction, а не distruction
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance Последний раз редактировалось pproger; 01.08.2012 в 21:53. |
|
01.08.2012, 21:49 | #33 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Вразумел.
Не знал, что так можно делать. На самом деле мне просто ни разу за всю практику не приходила идея выносить пустое туловище функции. На кой её выносить, если оно пустое? А если оно не пустое, то тут уже не чисто-виртуальное просится. Я почему то решил, что автору это тоже как бэ очевидно, и поэтому он не стал бы выносить пустое тело. Собственно, дальше декларации класса код не читал))) Ну что ж, профит поймал. Буду знать теперь, что и такое на крестах случается. |
01.08.2012, 21:52 | #34 | ||
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2 _Bers
Цитата:
Цитата:
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
||
01.08.2012, 21:56 | #35 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
Если у класса нет чисто-виртуальных функций, смысл делать его абстрактным? Последний раз редактировалось _Bers; 01.08.2012 в 22:10. |
|
01.08.2012, 21:58 | #36 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2_Bers
запретить пользователю класса создавать от него объекты, только наследоваться. во всяком случае именно для этого была введена такая схема. как обычно в плюсах делается. никому не мешает - пусть будет. или - ну вроде удобно - пусть будет. и да. абстрактным класс не только через чисто виртуальные функции сделать можно, как в синглтонах и любят делать. так что теоретически смысл есть. практически - кресты говноязык, и искать там какой-либо смысл себе дороже.
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance Последний раз редактировалось pproger; 01.08.2012 в 22:03. |
01.08.2012, 22:08 | #37 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
Это может быть актуально для интерфейсов. Но класс, в котором отсутствуют чисто-виртуальные функции - это либо вообще не интерфейс, либо интерфейс, реализующий некие дефолтные/базовые для иерархии возможности. На кой чорт запрещать создавать объекты такого класса? |
|
01.08.2012, 22:24 | #38 | |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2_Bers
ты опять невнимательно читаешь Цитата:
Код:
зачем/почему у меня не спрашивай, я уже давно не пишу на крестах. читай дизайн и эволюция с++, там дохрый страус рассказывает, какие препараты принимал во время "проектирования" языка. во, или в случае, когда чисто виртуальная функция имеет тело, в котором реализована часть функционала. остатки нужно добавить при наследовании и переопределении. не надо говорить, что можно эту часть вынести в невиртуальную функцию. свобода выбора. говнокодь как хочешь за это вроде бы все и любят кресты, не?
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance Последний раз редактировалось pproger; 01.08.2012 в 22:33. |
|
01.08.2012, 22:43 | #39 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Нет. Мое сообщение вышло позже по времени, чем твоё.
В момент его написание, сий текст ещё не был виден мною. Цитата:
Почему нельзя? Потому что, это может создать аварийную ситуацию. Как нечто, что идеологически не является интерфейсом (либо является интерфейсом с дефолтной реализаций) может создать аварийную ситуацию? Вопрос риторический. Теоретически, на плюсах можно наваять любое говно-арх, а потом приделывать костыли, что бы вся такая система не развалилась от первого же чиха. На практике, лично я ни разу не встречал. Имхо - сие есть ущербный костыль, невостребованный на практике. И если его кто и использует - лишь по незнанию, да неумению проектировать механизмы. Отсюда вытекает другой, более реалистичный вопрос. Это уже не праздная философия: Допустим есть некий механизм. У него есть служебный метод. Который предоставляет механизму некоторые данные. Согласно проекту, этот метод не нужен клиентам механизма. Во всяком случае, для работы механизма клиентам даже знать про этот метод не обязательно. Но! При этом, использование такого метода клиентами в любом случае не способно нанести ущерб инварианту механизма. Другими словами - этот метод абсолютно безобидный и безопасный. Вопрос: нужно ли делать такой метод приватным (поскольку идейно он - часть реализации, а не интерфейса), или можно оставить публичным, поскольку его использование клиентами в любом случае безобидно и безвредно, а так - авось для чего нибудь клиентам и сгодится? Вопрос: если запуски методов, или создание объектов неких служебных сущностей совершенно безобидно и безвредно для целостности системы, хотя возможно - лишено смысла, достаточный ли это повод для запрета использования? Или нет никакого смысла тратить время, запрещая то, что в любом случае не способно создать аварийную ситуацию? Я придерживаюсь мысли: подобного рода защита просто не имеет смысла. А следовательно, её конструирование - напрасная трата времени и денег компании. Поэтому, я считаю, что не нужно запрещать то, что можно безопасно использовать. Даже если на первый взгляд, такое использование не имеет смысла. Ну не имеет - ну никто и не будет тогда использовать. Проблем в любом случае не возникнет. Реализации для чисто-виртуальных функций не имеет смысла. Равно, как не имеет смысла чиста-виртуальные диструкторы. |
|
01.08.2012, 22:55 | #40 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
2_Bers
я тебя не пойму. ты мне что-то пытаешься доказать?) если тебе интересно мое мнение по данному вопросу - то нет, чисто виртуальные функции с телом не нужны. как и вызов delete на объект неполного класса. как и замыкание/каррирование по ссылке в лямбда функциях. как и сами лямбда функции в с++ (такое убожество, господи). как и куча других мест с неявным синтаксисом/опасным поведением. миллион таких мест в крестах. ибо язык такой. а ты начал разглагольствовать, зачем, почему. читай дизайн и эволюция, там многое проясняют, почему так, а не иначе.
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance Последний раз редактировалось pproger; 01.08.2012 в 22:57. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
освобождение динамически выделенной памяти | Einsttein | Общие вопросы C/C++ | 9 | 26.05.2010 15:40 |
Освобождение памяти | Seran4ek | Общие вопросы Delphi | 7 | 21.12.2009 18:07 |
Освобождение памяти | PUH | Помощь студентам | 1 | 22.11.2009 17:14 |
Освобождение памяти | VadEr | Общие вопросы Delphi | 2 | 17.04.2009 22:23 |
Освобождение памяти | AlexandrSid | Общие вопросы Delphi | 3 | 02.02.2009 13:45 |