#cpp
Почему объект передаваемый в исключении может приниматься по ссылке, хотя он должен только копироваться, то есть при раскрутке стека он копируется из одной области видимости в другую
Ответы
Ответ 1
При выбрасывании исключения оно копируется в специальную область памяти для хранения исключений (или, по возможности, сразу создается в этой области). Поэтому перехватывая исключение по ссылке вы получаете ссылку на этот объект, а не на некоторый объект, который раньше был на стеке. При этом перехватывание исключения по ссылки является предпочтительным в плане производительности по сравнению с перехватыванием по значению, так как в этом случае не происходит копирования.Ответ 2
ССылька подразумевает, что может обрабатываться обьект этого класса или любого производного класса. Она дает возможность также не копировать обьект во второй раз. Обьект простых типов, имеющие представление в размере одного машинного слова и не имеющих производных классов, можно принимать и по значению. По значению нужно принимать также в случаи, если вы хотите исключить возможность обработки обьекта любого производного класса...
Комментариев нет:
Отправить комментарий