|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
Алексей Роза 2020в C++ же конструкторы этим занимаются, которых не было в C. И они же гарантируют, что не будет мусора. Занимаются если они написаны. Гарантируют они ровно то, что в них написано. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2020, 18:04 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp А как вы проверите что там мусор и объект не полностью готов? Никак, это заранее надо предусмотреть разработчику класса. ООП гласит что объект сразу должен быть инициализирован, но если разработчик решает что некоторые поля могут быть инициализированы мусором, то почему нет? Вот так сложилось в С++ что по умолчанию это инициализация мусором и менять это в стандарте вряд ли кто захочет. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2020, 18:07 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
Dima T ... ООП гласит что объект сразу должен быть инициализирован... вообще говоря, ничего близко подобного "ООП" гласить не может . И особенно, с учетом того, что понятие "состояние" в ООП относится, главным образом , к скрытой, снаружи не видимой части состояния объекта там, где это "про ООП". Но нечто подобное, действительно, гласят, некоторые интертрепаторы ООП и изобретатели "самых безопасных в мире языков". Dima T Вот так сложилось в С++ что по умолчанию это инициализация мусором и менять это в стандарте вряд ли кто захочет. Думаю, что это исключено. По крайней мере, при жизни Страуструпа. Он, конечно, раб комитета, но не настолько, чтобы не суметь ему противостоять в принципиальных вопросах. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2020, 18:13 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
Алексей Роза 2020 это же "naked pointer", который "НЕЛЬЗЯ" ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2020, 18:37 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
booby, Мы выше выяснили, что полуобъект никакого смысла не имеет кроме скорости. Что не подтверждено кодом профи). Ну и в бизнес объектах добавляют флаг или перечислимое о том что он "сформирован" ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2020, 18:41 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp ... Ну и в бизнес объектах добавляют флаг или перечислимое о том что он "сформирован" это просто чепуха. "добавляют", но почти всегда не от большого ума. PetroNotC Sharp booby, Мы выше выяснили, что полуобъект никакого смысла не имеет кроме скорости. ... Похоже, вы не вполне поняли о чем идет речь. Забудьте про скорость. Те, кто считает, что вопрос только в скорости, автоматически влепляют в систему типов дефолтную инициализацию до полного состояния. Но, оказывается, в содержательных случаях, это левое движение, которое ни к чему не приближает. Здесь за вас просто не делают левого движения. Попробуйте испытать гордость. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2020, 18:53 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Алексей Роза 2020 это же "naked pointer", который "НЕЛЬЗЯ" Страуструп против: NO naked pointers (Страуструп): a) keep them inside functions and classes; (тут имеется ввиду, что в классах будут RAII и прочие shared-ptrs) b) keep arrays out of interfaces (prefer containers); c) pointers are implementation-level artifacts; d) a pointer in a function should not represent ownership; e) always consider std::unique_ptr AND sometimes std::shared_ptr; // правила Herb Sutter: 1. prefer to allocate heap objects using make_unique/make_shared or containers. 2. otherwise, use owner<> for source/layout compatibility with old code. Each non-null owner<> must be deleted exactly once, or moved. 3. Never dereference a null or invalid Pointer. 4. Never allow an invalid Pointer to escape a function. Dimitry Sibiryakov Алексей Роза 2020в C++ же конструкторы этим занимаются, которых не было в C. И они же гарантируют, что не будет мусора. Занимаются если они написаны. Гарантируют они ровно то, что в них написано. мы же про C/C++ говорим, зачем повторять очевидное? C/C++ написаны так, что там ВСЁ зависит от программиста. Но тысячи Core Guidelines как бэ намекают, что таки есть некие правила . ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2020, 19:03 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
booby, ОК, про скорость забыл. Главное не забыть инициализировать). Тут ведь третичная логика)). Да/нет/мусор )) Уже второй раз натыкаюсь на грабли. И IDE тоже нифига не помогает....в 21 веке. Повешу красный плакат перед носом)) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2020, 19:06 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Алексей Роза 2020 это же "naked pointer", который "НЕЛЬЗЯ" Скажем так: не рекомендуется использовать. Можно потому что указатель под капотом тех же умных указателей и прочих классов STL. Указатели даже для С++ это рудимент унаследованный из С, в С++ изначально ввели ссылки чтобы хоть как-то проблемы с указателями сгладить, но указатели оставили. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2020, 19:12 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp ... Тут ведь третичная логика)). Да/нет/мусор ... Здесь вы совершаете критическую ошибку. языкам программирования трехзначная логика и неприменение закона исключения третьего запрещены правительством США (это шутка, но с не сильно ошибочным содержанием). Нет никакого Да/нет/мусор Есть Да/нет/[неопределенное поведение], иначе см. на закон исключения третьего в п.1. Задача "безопасных" языков свести это к Да/нет. Вот и вся история. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2020, 19:13 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp И IDE тоже нифига не помогает....в 21 веке. Повешу красный плакат перед носом)) Помогает, но ненавязчиво Dimitry Sibiryakov Причём компилятор имеет привычку предупреждать об использовании неинициализированных переменных, но кто ж эти "многа букафф" читает?.. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2020, 19:14 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
мусор, не мусор - вот почему у меня время редактирования сообщения меньше времени его создания. Вот это настоящий вопрос/ ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2020, 19:16 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
Алексей Роза 2020, А если у меня указатель просто переход на функцию глобальную в модуле main? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
Никакие addref, release делать не нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2020, 19:18 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
booby мусор, не мусор - вот почему у меня время редактирования сообщения меньше времени его создания. Вот это настоящий вопрос/ Багофича sql.ru, ты не первый заметил 22208645 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2020, 19:21 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
Dima TПомогает, но ненавязчиво Поэтому лично я связкой "-Wall -Wextra -Werror" превращаю это в "навязчиво". И со времени, когда я начал так делать, количество багрепов резко уменьшилось. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2020, 19:33 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Мы не путаем варнинг Переменная не используется в коде и просто нарушена очередность вызова. Вызвано до инициализации. Завтра проверю что она там мяукает. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2020, 19:46 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
Хотя да, неинициализированные поля объектов оно не обнаруживает, к сожалению. Только локальные переменные. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2020, 19:48 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Да. И это жаль. В методах оно задолбало так как всегда прототип пишешь, и только после цепляешь все параметры в бизнес логику кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2020, 19:56 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
Мы тут долго обсуждаем почему не ноли, а можно что-то добавить чтобы в своем проекте сделать инициализацию нолями? Просто сделать для себя как хочется, а не как принято. Глобально оператор new можно перегрузить и там прописать, а как быть с тем что на стэке размещается, типа Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2020, 20:00 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
Как тут говорят - класс(структура) это святое! Не трожь и не посыпай никаким синтаксическим сахаром! (с) Страуструп. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2020, 20:00 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
Dima T, Я в Qt пишу. И там new практически не используется. Достаточно редко. Вот такие пироги. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2020, 20:02 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
Dima T, Да давно уже пора сделать. А кто хочет перформанса дать опции наподобие DEBUG, пускай он эту механику выключит там где ему сильно нужно. Но я сомневаюсь что в мире ООП кто-то сильно оптимизирует создание объектов. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2020, 20:26 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Dima T, Я в Qt пишу. И там new практически не используется. Достаточно редко. Вот такие пироги. Да, new это тоже опасный оператор, утечки памяти будут если накосячишь, поэтому используются обертки. Может ошибаюсь, с Qt незнаком, но без new в куче объект не разместить, а с объектами на стэке тоже далеко не уедешь. Подозреваю что new там есть глубоко закопанное, другой вопрос можно ли туда докопать. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2020, 20:41 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
Скорее здесь стек играет роль презерватива. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2020, 20:59 |
|
Как правильно вызвать указатель на функцию с парам строкой?
|
|||
---|---|---|---|
#18+
Dima T Мы тут долго обсуждаем почему не ноли, а можно что-то добавить чтобы в своем проекте сделать инициализацию нолями? Просто сделать для себя как хочется, а не как принято. Глобально оператор new можно перегрузить и там прописать, а как быть с тем что на стэке размещается, типа Код: plaintext 1. 2. 3.
как-то странно сам вопрос выглядит (вроде фигурные скобки уже были в топике). вообще-то это "инициализацией" называют. Вот рассказ как раз для фигурных скобок, например: https://habr.com/ru/post/436296/ А вообще, если именно "на стеке" хочется, то вроде как в C++ больше принято для такого хотения дело со Struct иметь, не? вот тут еще много букв с мультфильмами и перечислением 18 валидных способов инициализации целого (из которых первый - как раз не полностью сформированный объект). https://habr.com/ru/company/jugru/blog/469465/ ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2020, 00:58 |
|
|
start [/forum/topic.php?fid=57&msg=40013205&tid=2017312]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
36ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 284ms |
total: | 410ms |
0 / 0 |