Step 9 (S-11073)

From Stepik Wiki
Revision as of 13:06, 7 August 2017 by Admin (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/560/step/9

Step 9 (S-11073) 1.png

[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 и того же класс есть класс с конкретным довольно глубокий вопрос там есть несколько простых ответов а есть более сложные по которой не так просто догадаться