Step 9 (S-11073)
Step on Stepik: https://stepik.org/lesson/560/step/9
[00:00 - 00:15] ну и напоследок давайте обсудим то базовое правило список который я упоминал на прошлых это правило 1 определения английски это называется сокращается как правило упрощенно можно сформулировать
[00:15 - 00:32] следующим образом из 3 1 он говорит о том что в пределах любой единице трансляции то есть неоднозначность не может иметь несколько определений здесь важно понимать разницу между объявлениями определение
[00:32 - 00:51] разграничивать ну вот сейчас стоит вспомнить все что я про это говорил и осознать что данный пункт означает это означает что например нельзя определить 1 и ту же переменную дважды и не сразу однако можно например объявить 1 и ту же функцию
[00:51 - 01:05] несколько раз вот определять и можно только однажды можно объявить 1 и тот же класс несколько раз но вот определять его можно только единожды 2 пункт говорит о том что
[01:05 - 01:21] в пределах программа то есть пергамент про 1 единицу трансляции автор говорит уже все программ в пределах программа у не line функций и глобальных переменных не может быть
[01:21 - 01:36] более 1 определение если вдруг окажется что какая то глобальная переменная имеет несколько определений или обычных функций не имеет функции определения то на этапе компиляции
[01:36 - 01:54] у нас в каждый день с трансляцией отопления будет скомпилирована и на этапе линковки у нас либо окажется что 1 и та же глобальной переменной либо кажется что в 1 функции есть несколько скомпилированных так эта функция то это приводит к ошибке
[01:54 - 02:10] то есть ошибка в 1 пункте она определяется на этапе компиляции ошибка 2 пункте она определяется не топлю ковке
[02:10 - 02:29] а вот ошибка в 3 пункте она уже не определяет центр компиляции и линковки она просто привыкни прилюдно поглядеть 3 пункт говорит следующее что классы и на функции могут иметь несколько определений
[02:29 - 02:44] в рамках программы но если это так то есть определения даже если вдруг окажется что в вашей программе 1 и тот же класс определен в различных единиц трансляции по разному 1 и та же на и функция определена
[02:44 - 03:00] разных дискриминации по разным это приводит к неопределенному поведению то некорректное программ но если у нас 1 и та же интонация при на по разному более непонятно что произойдет на этапе линковки
[03:00 - 03:15] будет выбрана 1 из этих реализаций и только она и будет вызываться все оставшиеся будут выкинуты вопрос для вас значит подумайте о том что произойдет каким проблемам может привести
[03:15 - 03:32] если в программе кажется несколько различных определение 1 и того же класс есть класс с конкретным довольно глубокий вопрос там есть несколько простых ответов а есть более сложные по которой не так просто догадаться