170 похожих чатов

Посоветуйте на счёт спецификации noexcept. Много где советуют ставить над

каждым методом класса в пользу оптимизации. Следует его ставить везде или нет?

21 ответов

4 просмотра

Да, следует, если этот метод не кидает ничего. Особенно на конструкторы и оператор присваивания

Учти, что методов где его можно поставить обычно очень мало

Ilya Zviagin
Учти, что методов где его можно поставить обычно о...

Потому, что это значит что ничто изнутри (включая контейнеры и все такое прочее) не выкинет исключение никогда (контейнеры могут, но спецификация это пытается запретить)?

Andrey- Автор вопроса
Mikhail Kalugin
Потому, что это значит что ничто изнутри (включая ...

Я понял что это для оптимизации и локализации точки падения

Andrey
Я понял что это для оптимизации и локализации точк...

Да, в основном для оптимизации - мы как бы проводим границу говорим: «исключение никогда не перейдет эту границу», и компилятор может не создавать код передачи исключения от этого места дальше.

Andrey- Автор вопроса
Ilya Zviagin
НЕ для локализации

Мы можем посмотреть сразу в то место где была перейдена граница, разве не так?

Andrey
Мы можем посмотреть сразу в то место где была пере...

И да и нет. Мы обязаны обработать все исключения до пересечения этой границы.

Andrey
Мы можем посмотреть сразу в то место где была пере...

В лучшем случае, попытка перейти эту границу просто не скомпилируется. В худшем, исключения просто будут исчезать и все будет работать очень странно.

Mikhail Kalugin
В лучшем случае, попытка перейти эту границу прост...

Такое возможно только при вызове из extern "C" контекста

Andrey- Автор вопроса
Mikhail Kalugin
В лучшем случае, попытка перейти эту границу прост...

Не скомпилируется тогда когда мы добавили условия в noexcept. А когда исключения могут исчезнуть?

Andrey
Не скомпилируется тогда когда мы добавили условия ...

А, тут я перепутал немного: это происходит на границах контекстов C и C++ - C не знает об исключениях.

Andrey- Автор вопроса
Ilya Zviagin
Учти, что методов где его можно поставить обычно о...

Хотел переспросить, а как в случае get/set методов?

Andrey- Автор вопроса
Ilya Zviagin
Ничем не отличается...

Например если в программе достаточно много их, прийдётся все специфицировать.

Похожие вопросы

Обсуждают сегодня

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
function LoadMemoryFromInet2( f:TMemoryStream; const url:string; var e:string ):Boolean; var http:TIdHttp; LHandler: TIdSSLIOHandlerSocketOpenSSL;begin Result := fals...
Александр Смоляков
1
Я вот подумал. SSE выполняет операции максимум с 64-битной точностью. А FPU - всегда с 80-битной. Разве не должно быть FPU точнее тогда?
The Bird of Hermes
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
как быть с принтером? такой подход прокатит?
zamtmn
12
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
This is a big issue. Just by being a citizen of a country, you are denied to contribute to Open Source software: https://youtu.be/L5Ec5jrpLVk?si=1iIuHnMPbCB4anV-
Sharuzzaman Ahmat Raslan
72
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
Карта сайта