Вы не можете (разумно) назначить объект класса с const
членами.
Вот почему вы получаете сообщение об ошибке оператора присваивания копий .
Вы не получаете жалобы на конструктор копирования.
В других новостях:
const
(вы добавили только const
). Есть несколько дополнительных соображений для больших аргументов, которые копируются. В C ++ 11 они лучше всего передаются по значению и перемещаются. const
, чтобы они могли быть вызваны на объект const
. Что касается префиксов Get
, основанных на Java, рассмотрим GetSin(u)+GetCos(v)
по сравнению с sin(u)+cos(v)
. В Java префикс Get
может иметь некоторое значение для инструментов, которые используют интроспекцию. Java имеет интроспекцию. У C ++ нет интроспекции. Используемые соглашения лучше адаптировать к используемому языку.
Throwable находится на вершине всех исключений. Под Throwable находятся Error и Exception. Под Exception находится RuntimeException.
В Java есть два типа исключений - проверенные и непроверенные. Проверенные исключения навязываются компилятором (вы должны объявить их в предложении throws и в конечном итоге поймать их). Непроверенные исключения не подлежат принудительной поимке или объявлению в выражении throws.
(Спорная часть ответа)
Throwable существует для того, чтобы у всех типов исключений был родитель. Вы никогда не должны объявлять, что бросаете Throwable, и никогда не ловить его (если только вы действительно не знаете, что делаете).
Error существует для обозначения проблем со средой выполнения, вещей, от которых ваша программа, вероятно, не сможет оправиться, таких как плохо отформатированный файл класса или закончившаяся память виртуальной машины. Вам не следует ловить Error, если вы действительно не знаете, что делаете.
Exception существует как корень для всех непрограммистских ошибок (см. RuntimeException для "исключения" из этого), например, файл не может быть создан, потому что диск переполнен. Вы не должны бросать, выбрасывать или ловить Exception. Если вы должны поймать Exception, убедитесь, что вы знаете, что делаете.
RuntimeException существует для указания всех ошибок программиста, таких как выход за пределы массива или вызов метода на нулевом объекте. Это вещи, которые вы должны исправить, чтобы они не бросали исключения - они указывают на то, что вы, программист, испортили код. Опять же, вы не должны их ловить, если не знаете, что делаете.
Данные ‎below показывают иерархию Классов исключений. Базовый класс для всех Объектов исключения java.lang.Throwable
, вместе с его двумя подклассами java.lang.Exception
и java.lang.Error
.
Error
класс описывает внутренние системные ошибки (например, VirtualMachineError
, LinkageError
), которые редко происходят. Если такая ошибка происходит, существует мало, что можно сделать, и программа будет завершена Средой выполнения Java.
Exception
класс описывает ошибку, вызванную Вашей программой (например, FileNotFoundException
, IOException
). Эти ошибки могли быть зафиксированы и обработаны Вашей программой (например, выполнить альтернативное действие или делают корректный выход путем закрытия всех файлов, сети и соединений с базой данных).
Проверенный по сравнению с Непроверенным
Столь же проиллюстрированный, подклассы Error
и RuntimeException
известны, как снял флажок исключения. Эти исключения не проверяются компилятором, и следовательно, не должны быть пойманы или, как объявлять, выдаются в Вашей программе. Это вызвано тем, что нет очень, можно сделать за этими исключениями. Например, "делятся на 0" триггеров ArithmeticException
, индекс массива из-связанного инициировал ArrayIndexOutOfBoundException
, которые действительно программируют логические ошибки, которые должны быть зафиксированы в разовом скомпилированном, вместо того, чтобы оставить это обработке исключения на этапе выполнения.
Все другие исключение называют , проверил исключения. Они проверяются компилятором и должны быть пойманы или, как объявлять, брошены.
RuntimeException
и его подклассы не проверяются компилятором и не должен быть объявлен в подписи метода. Поэтому используйте их с осторожностью, поскольку Вам не сообщат и не можете знать об исключениях, которые могут произойти при помощи того метода (и поэтому не имейте надлежащих кодов обработки исключений), †“плохая практика разработки программного обеспечения.
источник здесь
Ответ TofuBeer ясно объясняет, что означают классы исключений.
Почему так много типов? Вместо этого Java может просто следовать простой схеме (просто попробовать / поймать все типы) для обработки ненормального состояния в программе?
Почему? Потому что они нужны! Без этих 4 классов обработка исключений по широкой категории была бы непрактичной.
Error
? Exception
class? RuntimeException
? Исключения времени выполнения предоставляют вам гибкость для избегать ловли, объявляя исключения.