|
C++: Перегрузка при множественном наследовании | ☑ | ||
---|---|---|---|---|
0
Ненавижу 1С
гуру
14.02.12
✎
17:12
|
допустим упрощенно есть
struct A { virtual void Test()=0; }; struct B: A { void Test() {/*...*/} }; struct C //не наследуется ни от чего, важно! { virtual void Test()=0; }; struct D: B, C { //КАК ПРАВИЛЬНО определить метод от C? void C::Test() {/*...*/} }; |
|||
1
mirosh
14.02.12
✎
17:13
|
вот за это я и не люблю с++ )
|
|||
2
Волшебник
14.02.12
✎
17:15
|
(0) Поставь Java или C# и не парься.
|
|||
3
zak555
14.02.12
✎
17:15
|
зачем структуры использовать ?
|
|||
4
Ненавижу 1С
гуру
14.02.12
✎
17:16
|
(2) в том и дело, хочу без промежуточной платформо-машины
(3) это пример, но и вообще в плюсах без разницы |
|||
5
Волшебник
14.02.12
✎
17:21
|
(4) Без промежуточной не обойдёшься. Слоёв 5-6 будет точно
|
|||
6
Кириллка
14.02.12
✎
17:23
|
(0)разыменовав явно, ромбовидное наследование же.
|
|||
7
Ненавижу 1С
гуру
14.02.12
✎
17:26
|
(6) нет его же!
(5) ладно тебе придираться |
|||
8
Кириллка
14.02.12
✎
17:27
|
(7)а, у тебя же struct C //не наследуется ни от чего
|
|||
9
Кириллка
14.02.12
✎
17:35
|
сработает?
void class C::Test() {/*...*/} |
|||
10
Ненавижу 1С
гуру
15.02.12
✎
08:43
|
(9) в том и дело, что нет
|
|||
11
Ненавижу 1С
гуру
15.02.12
✎
09:00
|
Вроде бы порешал разной сигнатурой методов (ввел фиктивный параметр)
|
|||
12
Stagor
15.02.12
✎
12:12
|
ООП устаревшая технология, где то была статья на (sql.ru) про новую парадигму!
|
|||
13
Конфигуратор1с
15.02.12
✎
12:16
|
(12)зря ты. Сейчас начнется срач на 3 ветки в 1000 постов
|
|||
14
Stagor
15.02.12
✎
12:22
|
(13) Может найду ссылку на статью...
|
|||
15
Кириллка
15.02.12
✎
14:40
|
(10)А че ты хочешь получить-то?
|
|||
16
Ненавижу 1С
гуру
15.02.12
✎
15:29
|
да уже получил, но расскажу таки, тут шаблоны
есть абстрактный класс Enumerable<T>, от него 1. есть вполне реальный класс List<T>: public Enumerable<T> 2. опять таки абстрактный класс CompositeEnumerable<T>: public Enumerable<T> 3. и от последнего уже опять вполне реальный класс CompositeList<T>: public Enumerable<T>, public List<Enumerable<T> > то есть CompositeList<T> одновременно является и списком списков и просто списком (в этом случае проход по всем спискам как по одному делается) |
|||
17
bahmet
15.02.12
✎
15:34
|
struct [1C++]:
,[C++]
|
|||
18
Stagor
16.02.12
✎
10:48
|
(13) Ну, вот на 100 постов даже нет :)
Устал народ от программирования :) |
|||
19
Ненавижу 1С
гуру
16.02.12
✎
10:50
|
весны народ хочет
|
|||
20
Stagor
16.02.12
✎
12:41
|
как обещал в (14)
http://blogerator.ru/page/oop_why-objects-have-failed |
|||
21
Stagor
16.02.12
✎
12:51
|
комментарий с форума:
К ООП тоже отношусь спокойно, отрицательно. Так вот, написание кода - это мелочи. Это 5-10% времени и стоимости разработки. Сотни миллиарды долларов и миллионы человеко-лет (без преувеличения), как в трубу, вылетают на поддержание (тестирование, правку багов) софта. Вот это и есть настоящая проблема. Да еще программисты наповадились с места на место бегать каждые 2-4 года, -- только человек освоится и годик поработает продуктивно, -- глядишь, он уже опять куда-то намыливается... И вот тут возникает интересная проблема. В связи с высокой текучестью кадров и большой сложностью реальных проектов читаемость и модифицируемость кода приобретает первостепенное значение! Чтобы код был читаем и легко модифицируем, крайне желательно, чтобы он был локально понятен. Так, чтобы новый человек, посмотрев на процедуру, смог достаточно быстро понять, что она делает и как. И вот тут, в объектно-ориентированных языках типа Java, С# начинается веселье с конструкторами, деструкторами, виртуальными функциями, наследованием, монстроидальным шаблонным метапрограммированием, полиморфизмом, исключительными ситуациями... Увидев вызов простой функции, как правило сразу понятно что происходит, можно сходить и посмотреть, что она делает. В объектно ориентированных языках, где народ (в особенности вчерашние студенты) любят, ой как любят переоперделять функции, не поймешь, какой из 15 виртуальных методов будет вызван в данном контексте, и читать текст их всех дело утомительное. В результате починка бага занимает в 3-5 раз больше времени. |
|||
22
Ненавижу 1С
гуру
16.02.12
✎
13:00
|
(21) однако новые языки (после плюс+плюс): шарп, ява, руби все же стали объектными
|
|||
23
Rie
16.02.12
✎
13:02
|
(22) Это одно из направлений. Есть Haskell, F# - это другое, не объектно-ориентированное направление. Есть Scala, Nemerle - это "гибридные" языки. И т.д.
|
|||
24
Ненавижу 1С
гуру
16.02.12
✎
13:04
|
(23) F# тоже поддерживает ООП, а вообще что-то они не менее известны широкой публике
|
|||
25
Ненавижу 1С
гуру
16.02.12
✎
13:04
|
в шарпе тоже есть и элементы функционального и обобщенного, это не противоречит ООП
|
|||
26
Rie
16.02.12
✎
13:10
|
(24) Поддерживает - как вспомогательный механизм и для интероперабельности.
Что касается известности - тут ведь дело не в качестве языка. Бренд + наличие инструментальных средств. Ну и "возраст" (в том числе "возраст" эффективной реализации - _компиляторы_ для функциональных языков появились позже, чем для императивных; да и современные функциональные языки начались в 1980-х, то есть, на полтора-два десятка лет позже того же ООП). (25) "Чистые" языки на практике малопригодны. Любой язык так или иначе реализует несколько парадигм. Но в большинстве языков - имеется основная парадигма + практически удобные довести. |
|||
27
Stagor
16.02.12
✎
13:11
|
вот еще с форума:
Например, когда-то одному разработчику был дан проект очень незатейливой игры. Предполагалось, что эта игра займет около месяца разработки. Но месяца не хватило. Спустя шесть недель выяснилась причина. Программист попался очень педантичный и вместо того чтобы взять чистый СИ и написать игру, он 80% времени занимался тусовкой классов в сложнейшей иерархии. Когда посчитали – оказалось порядка 210 классов. Движок получился, была написана чудовищная гора текста. В объекты было завернуто все, начиная от объектов межпоточной синхронизации и кончая экранными виджетами со своей собственной системой сообщений. Да только вот беда — сама игра была в совершенно зачаточном состоянии и не работала. и ещё, но in english http://www.softpanorama.org/SE/anti_oo.shtml |
|||
28
Rie
16.02.12
✎
13:16
|
(27) Ну, это больше напоминает историю о дураке и стеклянном половом члене, нежели характеризует ООП :-)
|
|||
29
Ненавижу 1С
гуру
16.02.12
✎
13:17
|
все таки устроили холивар )) льете на вентилятор?
|
|||
30
zinch
16.02.12
✎
13:23
|
Почему бы не использовать has-a отношение?
|
|||
31
Ненавижу 1С
гуру
16.02.12
✎
13:24
|
(30) можно, но там и так вложенных объектов много
|
|||
32
Ненавижу 1С
гуру
21.02.12
✎
15:42
|
оказывается нельзя так писать:
class A{}; class B: protected A{}; A* a1 = new B(); не знал |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |