powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как правильно вызвать указатель на функцию с парам строкой?
25 сообщений из 90, страница 2 из 4
Как правильно вызвать указатель на функцию с парам строкой?
    #40013151
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Роза 2020в C++ же конструкторы этим занимаются, которых не было в C.
И они же гарантируют, что не будет мусора.

Занимаются если они написаны. Гарантируют они ровно то, что в них написано.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013152
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
А как вы проверите что там мусор и объект не полностью готов?

Никак, это заранее надо предусмотреть разработчику класса. ООП гласит что объект сразу должен быть инициализирован, но если разработчик решает что некоторые поля могут быть инициализированы мусором, то почему нет?

Вот так сложилось в С++ что по умолчанию это инициализация мусором и менять это в стандарте вряд ли кто захочет.
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013158
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
... ООП гласит что объект сразу должен быть инициализирован...

вообще говоря, ничего близко подобного "ООП" гласить не может .
И особенно, с учетом того, что понятие "состояние" в ООП относится, главным образом , к скрытой,
снаружи не видимой части состояния объекта там, где это "про ООП".

Но нечто подобное, действительно, гласят, некоторые интертрепаторы ООП и изобретатели "самых безопасных в мире языков".

Dima T

Вот так сложилось в С++ что по умолчанию это инициализация мусором и менять это в стандарте вряд ли кто захочет.

Думаю, что это исключено.
По крайней мере, при жизни Страуструпа.
Он, конечно, раб комитета, но не настолько, чтобы не суметь ему противостоять в принципиальных вопросах.
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013173
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Роза 2020
это же "naked pointer", который "НЕЛЬЗЯ"
не понял что это нельзя? Работает ведь.
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013174
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby,
Мы выше выяснили, что полуобъект никакого смысла не имеет кроме скорости.
Что не подтверждено кодом профи).
Ну и в бизнес объектах добавляют флаг или перечислимое о том что он "сформирован"
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013181
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
...
Ну и в бизнес объектах добавляют флаг или перечислимое о том что он "сформирован"

это просто чепуха.
"добавляют", но почти всегда не от большого ума.

PetroNotC Sharp
booby,
Мы выше выяснили, что полуобъект никакого смысла не имеет кроме скорости.
...

Похоже, вы не вполне поняли о чем идет речь.
Забудьте про скорость.

Те, кто считает, что вопрос только в скорости, автоматически влепляют в систему типов дефолтную инициализацию до полного состояния.
Но, оказывается, в содержательных случаях, это левое движение, которое ни к чему не приближает.
Здесь за вас просто не делают левого движения.
Попробуйте испытать гордость.
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013185
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 как бэ намекают, что таки есть некие правила .
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013186
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby,
ОК, про скорость забыл.
Главное не забыть инициализировать).
Тут ведь третичная логика)). Да/нет/мусор
))
Уже второй раз натыкаюсь на грабли.
И IDE тоже нифига не помогает....в 21 веке.
Повешу красный плакат перед носом))
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013188
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Алексей Роза 2020
это же "naked pointer", который "НЕЛЬЗЯ"
не понял что это нельзя? Работает ведь.

Скажем так: не рекомендуется использовать. Можно потому что указатель под капотом тех же умных указателей и прочих классов STL.
Указатели даже для С++ это рудимент унаследованный из С, в С++ изначально ввели ссылки чтобы хоть как-то проблемы с указателями сгладить, но указатели оставили.
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013189
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
...
Тут ведь третичная логика)). Да/нет/мусор
...

Здесь вы совершаете критическую ошибку.

языкам программирования трехзначная логика и неприменение закона исключения третьего запрещены
правительством США (это шутка, но с не сильно ошибочным содержанием).

Нет никакого Да/нет/мусор

Есть Да/нет/[неопределенное поведение], иначе см. на закон исключения третьего в п.1.
Задача "безопасных" языков свести это к Да/нет.

Вот и вся история.
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013190
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
И IDE тоже нифига не помогает....в 21 веке.
Повешу красный плакат перед носом))

Помогает, но ненавязчиво
Dimitry Sibiryakov

Причём компилятор имеет привычку предупреждать об использовании неинициализированных переменных, но кто ж эти "многа букафф" читает?..
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013191
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мусор, не мусор - вот почему у меня время редактирования сообщения меньше времени его создания.
Вот это настоящий вопрос/
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013192
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Роза 2020,
А если у меня указатель просто переход на функцию глобальную в модуле main?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
myFunction() {
`````
} 

main(....
.... 
Class A a
a.pointerFunc = myFunction;


Никакие addref, release делать не нужно.
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013193
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby
мусор, не мусор - вот почему у меня время редактирования сообщения меньше времени его создания.
Вот это настоящий вопрос/

Багофича sql.ru, ты не первый заметил 22208645
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013197
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TПомогает, но ненавязчиво

Поэтому лично я связкой "-Wall -Wextra -Werror" превращаю это в "навязчиво". И со времени,
когда я начал так делать, количество багрепов резко уменьшилось.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013202
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Мы не путаем варнинг Переменная не используется в коде и просто нарушена очередность вызова. Вызвано до инициализации.
Завтра проверю что она там мяукает.
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013205
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя да, неинициализированные поля объектов оно не обнаруживает, к сожалению. Только
локальные переменные.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013207
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
Да. И это жаль.
В методах оно задолбало так как всегда прототип пишешь, и только после цепляешь все параметры в бизнес логику кода.
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013208
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы тут долго обсуждаем почему не ноли, а можно что-то добавить чтобы в своем проекте сделать инициализацию нолями? Просто сделать для себя как хочется, а не как принято.

Глобально оператор new можно перегрузить и там прописать, а как быть с тем что на стэке размещается, типа
Код: plaintext
1.
2.
3.
main(....
.... 
Class A a;
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013209
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как тут говорят - класс(структура) это святое! Не трожь и не посыпай никаким синтаксическим сахаром! (с) Страуструп.
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013211
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
Я в Qt пишу. И там new практически не используется.
Достаточно редко.
Вот такие пироги.
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013217
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Да давно уже пора сделать. А кто хочет перформанса дать опции наподобие DEBUG, пускай он эту механику выключит там где ему сильно нужно.

Но я сомневаюсь что в мире ООП кто-то сильно оптимизирует создание объектов.
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013227
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Dima T,
Я в Qt пишу. И там new практически не используется.
Достаточно редко.
Вот такие пироги.

Да, new это тоже опасный оператор, утечки памяти будут если накосячишь, поэтому используются обертки.
Может ошибаюсь, с Qt незнаком, но без new в куче объект не разместить, а с объектами на стэке тоже далеко не уедешь. Подозреваю что new там есть глубоко закопанное, другой вопрос можно ли туда докопать.
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013236
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее здесь стек играет роль презерватива.
...
Рейтинг: 0 / 0
Как правильно вызвать указатель на функцию с парам строкой?
    #40013294
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
Мы тут долго обсуждаем почему не ноли, а можно что-то добавить чтобы в своем проекте сделать инициализацию нолями? Просто сделать для себя как хочется, а не как принято.

Глобально оператор new можно перегрузить и там прописать, а как быть с тем что на стэке размещается, типа
Код: plaintext
1.
2.
3.
main(....
.... 
Class A a;


как-то странно сам вопрос выглядит (вроде фигурные скобки уже были в топике).

вообще-то это "инициализацией" называют.
Вот рассказ как раз для фигурных скобок, например:
https://habr.com/ru/post/436296/

А вообще, если именно "на стеке" хочется, то вроде как в C++ больше принято для такого хотения дело со Struct иметь, не?

вот тут еще много букв с мультфильмами и перечислением 18 валидных способов инициализации целого
(из которых первый - как раз не полностью сформированный объект).
https://habr.com/ru/company/jugru/blog/469465/
...
Рейтинг: 0 / 0
25 сообщений из 90, страница 2 из 4
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как правильно вызвать указатель на функцию с парам строкой?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]