|
|
|
Некоторые вопросы о программировании на C++
|
|||
|---|---|---|---|
|
#18+
petravmaytonпропущено... Что за цепочки? "Method chaining"? Я не знаю что имелось в виду. Нужно уточнить у Mozok. Как дела кст. Заходи в наш бенчмарк. Прокашляем вопросы перформанса на сях. Заодно обсудим планы на будущее. Бенчмарк I/O и использование memory. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2015, 22:25:19 |
|
||
|
Некоторые вопросы о программировании на C++
|
|||
|---|---|---|---|
|
#18+
wstТак placement new и есть только вызов конструктора. MasterZivplacement new -- это как раз вызов конструктора, а не operator new. Ну началось. Так и знал. placement new - это всего лишь способ передать дополнительные аргументы в функцию выделения памяти. Даже если используется неперегружаемая версия, как у petrav в примере, объект полностью создаётся с нуля в указанной области, а не просто вызывается конструктор. Отличие в вызове констукторов предков и полей. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. maytonЧто за цепочки? "Method chaining"? Имелось в виду Код: plaintext 1. Оно же delegating constructors. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2015, 23:16:11 |
|
||
|
Некоторые вопросы о программировании на C++
|
|||
|---|---|---|---|
|
#18+
MozokДаже если используется неперегружаемая версия, как у petrav в примере, объект полностью создаётся с нуля в указанной области, а не просто вызывается конструктор. Отличие в вызове констукторов предков и полей. После таких слов даже Ваш код рассматривать не хочется. Вызов конструктора — это и есть создание объекта с нуля. Других вариантов нет. Не рассматриваем сгенерированное исключение в конструкторе — это отдельная тема. Отличия в вызове конструкторов предков и полей данных нет никакого. Конструктор конструирует объект. В данной области памяти. С вызовом конструкторов предков и полей. И всё. Просто new перед этим выделяет память для объекта, а в случае placement new мы сами обязаны выделить память. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2015, 01:28:49 |
|
||
|
Некоторые вопросы о программировании на C++
|
|||
|---|---|---|---|
|
#18+
Mozok... А не… Всё же посмотрел Ваш код. Там вы дважды допустили утечку памяти. Плюс, возможно, в конце уронили приложение — зависит от реализации класса std::string — хотя тут могут быть тонкости. Это к Московскому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2015, 01:36:17 |
|
||
|
Некоторые вопросы о программировании на C++
|
|||
|---|---|---|---|
|
#18+
maytonpetravпропущено... Я не знаю что имелось в виду. Нужно уточнить у Mozok. Как дела кст. Заходи в наш бенчмарк. Прокашляем вопросы перформанса на сях. Заодно обсудим планы на будущее. Бенчмарк I/O и использование memory. Как дела? Я две недели на южном море был. Хорошо что ты не ответил в нашем споре о применимости языков. Пустой был спор. А какой такой «наш бенчмарк»? Это тема «Тяпничный бенчмарк CPU (part-1)» в разделе «Программирование», где вы меряетесь производительностью .NET и Java? Ну так в этом споре С++ заведомого в более выигрышном положении (раза в два-три). Если, конечно, узкое горлышко в алгоритме не винчестер и не магнитная лента (для бекапов). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2015, 01:55:26 |
|
||
|
Некоторые вопросы о программировании на C++
|
|||
|---|---|---|---|
|
#18+
BagaBagaMozokпропущено... Pimpl . Я не уверен, что именно защита от "целеустремлённого настойчивого буратины". Для особо настойчивых просто добавляется необходимость взятия ещё одного адреса расчёта смещения. Мне кажется, что гораздо более существенными фишками этой техники являются (b) adding new data members to the private struct does not affect binary compatibility; (c) the header file containing the class declaration only needs to #include those other files needed for the class interface, rather than for its implementation. One side benefit is that compilations are faster because the header file changes less often. . Что, собственно, есть способ отделения интерфейса от реализации (без болезней типа необходимости пересобрать всё-всё только из-за изменения одной строчки в хедере). Почитал по той ссылке в w. Т.о. непрозрачный указатель есть объявление незавершенного типа содержащего все data memberы в header, с его дальнейшим определением в другом месте. Но как это поможет ? Определение класса, даже в том случае если содержит только адрес незавершенного типа со всеми data members, разве не позволит получить адрес этого объекта с его data members ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2015, 02:13:38 |
|
||
|
Некоторые вопросы о программировании на C++
|
|||
|---|---|---|---|
|
#18+
Хотя, скажу честно, идея с использованием непрозрачных указателей мне кажется очень даже симпатичной. Вы используете данную технологию в своих реальных программах ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2015, 02:16:13 |
|
||
|
Некоторые вопросы о программировании на C++
|
|||
|---|---|---|---|
|
#18+
maytonОбычно топик заканчивается либо решением проблемы. Либо каждый для себя делает выводы. А тут - философский пинг-понг. Марк, у нас такого тут нет :) petrav Что такое «fe»? :) for example. Редко, но такое сокращение можно встретить. Как правило сокращают используя латинское e. g.(exempli gratia), но мне почему-то больше нравится первый вариант :) PS Прошу всех ни в коем случае не ругаться вновь по поводу прошлых обсуждений касаемо Java и других вещей не связанных с ООП на С++. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2015, 02:26:08 |
|
||
|
Некоторые вопросы о программировании на C++
|
|||
|---|---|---|---|
|
#18+
SashaMercuryПочитал по той ссылке в w. Т.о. непрозрачный указатель есть объявление незавершенного типа содержащего все data memberы в header, с его дальнейшим определением в другом месте. Но как это поможет ? Определение класса, даже в том случае если содержит только адрес незавершенного типа со всеми data members, разве не позволит получить адрес этого объекта с его data members ? Pimpl. Это указатель не на «незавершенный тип/класс» и уж тем более не «непрозрачный указатель». Так не говорят. Это указатель на «предобъявленный класс/тип». Вот так: Код: plaintext 1. 2. И теперь можно оперировать указателями и ссылками на объекты класса Foo. До тех пор пока в данной единице компиляции ты не начал создавать объекты класса Foo или вызывать его методы. В С++ не существует способа защиты памяти объектов класса. Всегда можно грязными методами достучаться до чего угодно. При желании. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2015, 02:34:05 |
|
||
|
Некоторые вопросы о программировании на C++
|
|||
|---|---|---|---|
|
#18+
petrav Это указатель не на «незавершенный тип/класс» и уж тем более не «непрозрачный указатель». Так не говорят. Это указатель на «предобъявленный класс/тип». Но ведь существует в стандарте определение incomplete type, потому так и перевёл. Тогда уж лучше говорить оперируя английскими терминами, чтобы не запутаться в переводе слов в России ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2015, 02:46:03 |
|
||
|
Некоторые вопросы о программировании на C++
|
|||
|---|---|---|---|
|
#18+
petravЭто указатель не на «незавершенный тип/класс» и уж тем более не «непрозрачный указатель». Так не говорят. Это указатель на «предобъявленный класс/тип». Точнее даже «предобъявленный тип» не говорят. Говорят «предобъявленный класс», «предобъявленный union» и «предобъявленная стуктура». ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2015, 02:48:19 |
|
||
|
Некоторые вопросы о программировании на C++
|
|||
|---|---|---|---|
|
#18+
SashaMercurypetrav Это указатель не на «незавершенный тип/класс» и уж тем более не «непрозрачный указатель». Так не говорят. Это указатель на «предобъявленный класс/тип». Но ведь существует в стандарте определение incomplete type, потому так и перевёл. Тогда уж лучше говорить оперируя английскими терминами, чтобы не запутаться в переводе слов в России Ну, Вам нужно стать уважаемым автором книг по С++ на русском языке. Или хотя бы уважаемым переводчиком. Тогда сможете повлиять на лексику С++ в русском изложении. А то так и появляются фразы «представление в С++» и никто не может понять что это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2015, 02:59:05 |
|
||
|
Некоторые вопросы о программировании на C++
|
|||
|---|---|---|---|
|
#18+
petrav А то так и появляются фразы «представление в С++» и никто не может понять что это. Ну это собственно появилось у BS :) Но в стандарте такого термина действительно нет. Выше я приводил цитаты как из стандарта так и из BS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2015, 05:32:45 |
|
||
|
Некоторые вопросы о программировании на C++
|
|||
|---|---|---|---|
|
#18+
[quot SashaMercury]BagaBagaпропущено... ... Почитал по той ссылке в w. Т.о. непрозрачный указатель есть объявление незавершенного типа содержащего все data memberы в header, с его дальнейшим определением в другом месте. Но как это поможет ? Определение класса, даже в том случае если содержит только адрес незавершенного типа со всеми data members, разве не позволит получить адрес этого объекта с его data members ? SashaMercury, вам надо использовать любую хорошую (т.е. от классиков) русскоязычную книгу (перевод, конечно же), а то вас с вашей терминологией или не поймут вовсе, или поймут неправильно. Компилятору нужно знать сигнатуры тех объектов, с которыми он работает. Реализацию ему знать необязательно (не везде). Для того, чтобы ввести что-то в пространство имён, используется forward declaration (по-русски оно звучит как "предварительное объявление" или, иногда, ооочень иногда именуемое также как "опережающее объявление"). Именно это вы и видите. Внутри класса сделано локальное предварительное объявление типа. Если угодно, включая любой заголовочный файл вы тем самым вводите в свое пространство имен множество предварительных объявлений. Где-то в другом месте обязана находиться реализация (не обязательно, к стати, в исходниках - это вполне могут быть бинарные библиотеки). Так вот, это предварительное объявление позволяет компилятору убедиться в синтаксической правильности программы. Если же вы обманули компилятор и не дали ему реализации - на вас заругается линкер на этапе линковки объектных файлов, или, в более разумном случае, тот же компилятор пропоет про что-нибудь 'not found', но _на_более_поздних_этапах. Механизм предварительных объявлений позволяет отделить объявления (интерфейс) от определения (реализации) и избежать необходимости кучу раз перекомпилировать один и тот же код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2015, 08:26:19 |
|
||
|
Некоторые вопросы о программировании на C++
|
|||
|---|---|---|---|
|
#18+
petravНу так в этом споре С++ заведомого в более выигрышном положении (раза в два-три). Если, конечно, узкое горлышко в алгоритме не винчестер и не магнитная лента (для бекапов). Это сарказм был по поводу "винчестер и магнитная лента" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2015, 08:45:50 |
|
||
|
Некоторые вопросы о программировании на C++
|
|||
|---|---|---|---|
|
#18+
BagaBaga, понял, спасибо. У меня есть книга BS на русском языке (хотя английский там несложный, и я предпочитаю английский вариант). Посмотрю что написано в ней(в русском варианте). Есть Лафоре и Павловская, кроме того. Но лучше у BS. У него лучше всего написано ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2015, 09:16:16 |
|
||
|
Некоторые вопросы о программировании на C++
|
|||
|---|---|---|---|
|
#18+
maytonpetravНу так в этом споре С++ заведомого в более выигрышном положении (раза в два-три). Если, конечно, узкое горлышко в алгоритме не винчестер и не магнитная лента (для бекапов). Это сарказм был по поводу "винчестер и магнитная лента" ? Даже интересно где же ты в моих словах заподозрил сарказм? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2015, 13:59:35 |
|
||
|
Некоторые вопросы о программировании на C++
|
|||
|---|---|---|---|
|
#18+
SashaMercurypetrav А то так и появляются фразы «представление в С++» и никто не может понять что это. Ну это собственно появилось у BS :) Но в стандарте такого термина действительно нет. Выше я приводил цитаты как из стандарта так и из BS Страуструп использует термин «представление»? Не верю. :-Р ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2015, 14:00:49 |
|
||
|
Некоторые вопросы о программировании на C++
|
|||
|---|---|---|---|
|
#18+
petravmaytonпропущено... Это сарказм был по поводу "винчестер и магнитная лента" ? Даже интересно где же ты в моих словах заподозрил сарказм? У меня просто слов нет. По поводу магнитной ленты. Я не знаю где. В какой предметной области. В каких задачах. У разработчика на С++ вдруг вдруг внезапно (!) появится задача что-то кодить и иметь в виду устройством вывода /dev/st или ему подобное. В скобках замечу что я сам бэкапил много чего но это задачи рода админских а не девелоперских. Поэтому мне остаётся только всплеснуть руками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2015, 14:15:44 |
|
||
|
Некоторые вопросы о программировании на C++
|
|||
|---|---|---|---|
|
#18+
maytonpetravпропущено... Даже интересно где же ты в моих словах заподозрил сарказм? У меня просто слов нет. По поводу магнитной ленты. Я не знаю где. В какой предметной области. В каких задачах. У разработчика на С++ вдруг вдруг внезапно (!) появится задача что-то кодить и иметь в виду устройством вывода /dev/st или ему подобное. В скобках замечу что я сам бэкапил много чего но это задачи рода админских а не девелоперских. А кто по твоему разработал инструменты (программы) которыми пользуются админы? АС Пушкин — лётчик? Я могу ошибаться, но насколько я знаю магнитная лента и сейчас живее всех живых. Очень дёшево и очень надёжно для огромных объёмов данных. Бекапы корпоративного уровня. Но очень медленно. maytonПоэтому мне остаётся только всплеснуть руками. Да уж. Магнитная лента — старый конь борозды не портит . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2015, 14:50:29 |
|
||
|
Некоторые вопросы о программировании на C++
|
|||
|---|---|---|---|
|
#18+
mayton, Но ты не понял основного моего посыла. Магнитная лента настолько медленная, что операции с ней можно даже на Яве программировать. :) Ну это типа шутка. Ты знаком с интернет-мемом «Ява не тормозит»? Про ту машину слышал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2015, 14:53:17 |
|
||
|
Некоторые вопросы о программировании на C++
|
|||
|---|---|---|---|
|
#18+
mayton, Кстати вспомнил еще одну область применения магнитной ленты и ферромагнитной проволки. Бортовой самописец . Последнее время, правда, заменяется на флешки. Но вот усилят нам санкции и такой же как я человек в России будет на Си/С++ писать драйвер для устройства с магнитной лентой. Будет даже надёжнее флешки, например, в плане устойчивости к радиации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2015, 15:18:39 |
|
||
|
Некоторые вопросы о программировании на C++
|
|||
|---|---|---|---|
|
#18+
petravКстати вспомнил еще одну область применения магнитной ленты и ферромагнитной проволки. Бортовой самописец . Последнее время, правда, заменяется на флешки. да ты шо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2015, 15:47:54 |
|
||
|
Некоторые вопросы о программировании на C++
|
|||
|---|---|---|---|
|
#18+
petravmayton, Но ты не понял основного моего посыла. Магнитная лента настолько медленная, что операции с ней можно даже на Яве программировать. :) Ну это типа шутка. Я не знаю. Мне кажется ты живёшь где-то в 1997 году. Твоё представление о Java базируется на срезе состояния этого проекта в далёком прошлом. Java сегодня обеспечивает пропускную способность в мегафлопах приближённую к С++ и это даёт возможность применять ее для бизнес-процессов. Почитай ради интереса про Disruptor к примеру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2015, 16:38:58 |
|
||
|
Некоторые вопросы о программировании на C++
|
|||
|---|---|---|---|
|
#18+
petravmayton Кстати вспомнил еще одну область применения магнитной ленты и ферромагнитной проволки. Бортовой самописец . Последнее время, правда, заменяется на флешки. Но вот усилят нам санкции и такой же как я человек в России будет на Си/С++ писать драйвер для устройства с магнитной лентой. Будет даже надёжнее флешки, например, в плане устойчивости к радиации. Я возможно покажусь консервативным но я за то чтобы писать на проволоку. Когда речь идёт о восстановлении инфы из этих ваших чёрных ящиков то аналоговая (по сути) запись даёт возможность восстановить хоть что-то. Да и катушка с проволокой от удара об землю остаётся катушкой. Флешка в самописце - это игра в рулетку. Наеб..тся и вообще ни бита не восстановят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2015, 17:02:00 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39052364&tid=2018842]: |
0ms |
get settings: |
7ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
181ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 465ms |

| 0 / 0 |
