Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Ρ‹ программирования Π½Π° Π‘++. 101 ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΈ рСкомСндация». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 41

Автор Π“Π΅Ρ€Π± Π‘Π°Ρ‚Ρ‚Π΅Ρ€

Π”ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΠ°Ρ€Ρƒ слов ΠΎΠ± ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ прСдусловий Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. УсловиС являСтся прСдусловиСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ f Ρ‚ΠΎΠ³Π΄Π° ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ основания ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ вСсь Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ провСряСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ условия ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ f. НапримСр, Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π΅Π²Π΅Ρ€Π½ΠΎ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ прСдусловиСм Π½Π΅Ρ‡Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡƒΡ‚Π΅ΠΌ выполнСния сущСствСнной Ρ€Π°Π±ΠΎΡ‚Ρ‹ самой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, Π»ΠΈΠ±ΠΎ ΠΏΡƒΡ‚Π΅ΠΌ доступа ΠΊ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Вакая Ρ€Π°Π±ΠΎΡ‚Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π½Π΅ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ Π΅Π΅ ΠΊΠΎΠ΄ΠΎΠΌ.

НапримСр, функция, которая ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ string, содСрТащий имя Ρ„Π°ΠΉΠ»Π°, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π΄Π΅Π»Π°Ρ‚ΡŒ условиС сущСствования Ρ„Π°ΠΉΠ»Π° прСдусловиСм, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π½Π΅ Π² состоянии Π½Π°Π΄Π΅ΠΆΠ½ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» сущСствуСт, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Ρ„Π°ΠΉΠ»Π° (ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ сущСствования Ρ„Π°ΠΉΠ»Π° Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΈΠ»ΠΈ процСсс ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ этот Ρ„Π°ΠΉΠ» Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ сущСствования Ρ„Π°ΠΉΠ»Π° Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΎΠΉ открытия Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ). ЕдинствСнный ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ сущСствованиС Ρ„Π°ΠΉΠ»Π° прСдусловиСм β€” это ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ ΠΎΡ‚ΠΊΡ€Ρ‹Π» Π΅Π³ΠΎ, Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ifstream ΠΈΠ»ΠΈ Π΅Π³ΠΎ эквивалСнт (Ρ‡Ρ‚ΠΎ ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ бСзопаснСС, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΡ€ΠΈ этом выполняСтся Π½Π° Π±ΠΎΠ»Π΅Π΅ высоком ΡƒΡ€ΠΎΠ²Π½Π΅ абстракции; см. Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΡŽ 63), Π° Π½Π΅ простоС имя Ρ„Π°ΠΉΠ»Π° Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° string. МногиС прСдусловия Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ‹ Π±ΠΎΠ»Π΅Π΅ строгим Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ ошибки Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния Π² ошибки Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ компиляции (см. Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΡŽ 14).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1. std::string::insert (ошибка прСдусловия). ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ символ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ string Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ pos, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ значСния pos, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π½Π°Ρ€ΡƒΡˆΠ°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ трСбования ΠΊ Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ; Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΎΡΡŒ ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ pos > size(). Ѐункция insert Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ, Ссли для Π½Π΅Π΅ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ созданы ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ условия.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2. std::string::append (ошибка постусловия). ΠŸΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ символа ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ string сбой ΠΏΡ€ΠΈ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π±ΡƒΡ„Π΅Ρ€Π°, Ссли Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ, Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ дСйствия ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΆΠ΅ постусловия, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΉ сбой являСтся ошибкой.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3. ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ получСния Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния (ошибка постусловия). ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° являСтся постусловиСм для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Если Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ создано (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ double, Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ double с Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ матСматичСскими свойствами Π½Π΅ сущСствуСт), Ρ‚ΠΎ это являСтся ошибкой.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 4. std::string::find_first_of (Π½Π΅ ошибка Π² контСкстС string). ΠŸΡ€ΠΈ поискС символа Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ string, Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π°ΠΉΡ‚ΠΈ искомый символ β€” Π²ΠΏΠΎΠ»Π½Π΅ Π·Π°ΠΊΠΎΠ½Π½Ρ‹ΠΉ ΠΈΡ‚ΠΎΠ³ поиска, ошибкой Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ. Как ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, это Π½Π΅ ошибка ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с классом string ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния. Если Π²Π»Π°Π΄Π΅Π»Π΅Ρ† Π΄Π°Π½Π½ΠΎΠΉ строки ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ символ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Π»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² строкС, ΠΈ Π΅Π³ΠΎ отсутствиС, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, являСтся ошибкой Π² соотвСтствии с высокоуровнСвым ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ, Ρ‚ΠΎ высокоуровнСвый Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΡƒΠ²Π΅Π΄ΠΎΠΌΠΈΡ‚ΡŒ ΠΎΠ± ошибкС ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 5. Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ условия ошибок Π² ΠΎΠ΄Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. НСсмотря Π½Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΡƒΡŽΡΡ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ дисковых носитСлСй, запись Π½Π° диск Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ сопровоТдаСтся ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ΠΌ ошибок. Если Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ класс File, Π² ΠΎΠ΄Π½ΠΎΠΉ-СдинствСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ FilΠ΅::Write(const char*buffer, size_t size), которая Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ„Π°ΠΉΠ» Π±Ρ‹Π» ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ для записи, Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ buffer ΠΈΠΌΠ΅Π» Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия.

β€’ Π•сли buffer Ρ€Π°Π²Π΅Π½ NULL, ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΎΠ± ошибкС Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ прСдусловия.

β€’ Π•сли Ρ„Π°ΠΉΠ» ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния: ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΎΠ± ошибкС Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ прСдусловия.

β€’ Π•сли запись Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° Π½Π΅ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ: ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΎΠ± ошибкС Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ постусловия, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ функция Π½Π΅ Π² состоянии Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 6. Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΉ статус ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ условия. Одно ΠΈ Ρ‚ΠΎ ΠΆΠ΅ условиС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ прСдусловиСм для ΠΎΠ΄Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ²Ρ‹ΠΌ для Π΄Ρ€ΡƒΠ³ΠΎΠΉ. Π’Ρ‹Π±ΠΎΡ€ зависит ΠΎΡ‚ Π°Π²Ρ‚ΠΎΡ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт сСмантику интСрфСйса. Π’ частности, std::vector прСдоставляСт Π΄Π²Π° ΠΏΡƒΡ‚ΠΈ для выполнСния индСксированного доступа: ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ operator[], ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ выполняСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ Π²Ρ‹Ρ…ΠΎΠ΄Π° Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°, ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ at, которая Ρ‚Π°ΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ выполняСт. И ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ operator[], ΠΈ функция at Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ выполнСния прСдусловия, состоящСго Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° operator[] Π½Π΅ трСбуСтся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π΅Π³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ‡Π΅Ρ‚ΠΊΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° находился Π² допустимом Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ; понятно, Ρ‡Ρ‚ΠΎ данная функция нСбСзопасна. Ѐункция ΠΆΠ΅ at Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ ситуации Π²ΠΏΠΎΠ»Π½Π΅ бСзопасна, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° провСряСт ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ своСго Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΊ допустимому Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΈ Ссли Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ допустимого Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‚ΠΎ ΠΎΠ½Π° сообщаСт ΠΎΠ± ошибкС (ΠΏΡƒΡ‚Π΅ΠΌ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ std::out_of_range).

Бсылки

[Abrahams01b] β€’ [Meyer00] β€’ [Stroustrup00] Β§8.3.3, Β§14.1, Β§14.5 β€’ [Sutter04b]

71. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈ ΠΏΠΈΡˆΠΈΡ‚Π΅ бСзопасный Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ ошибок ΠΊΠΎΠ΄

РСзюмС

Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ обСспСчивайтС Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΡ‚Ρ€ΠΎΠ³ΡƒΡŽ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡŽ бСзопасности, ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Ρ‚Ρ€Π°Ρ‚ со стороны Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π°, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ уровня Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ. ВсСгда обСспСчивайтС, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, Π±Π°Π·ΠΎΠ²ΡƒΡŽ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡŽ бСзопасности.

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π»ΡŽΠ±Ρ‹Ρ… ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° всСгда остаСтся Π² ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΌ состоянии (Π² этом ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ базовая гарантия). ΠžΡΡ‚Π΅Ρ€Π΅Π³Π°ΠΉΡ‚Π΅ΡΡŒ ошибок, Π½Π°Ρ€ΡƒΡˆΠ°ΡŽΡ‰ΠΈΡ… ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ, Π½ΠΎ Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡΡΡŒ ΠΈΠΌΠΈ).

Π–Π΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ состояниС Π»ΠΈΠ±ΠΎ являСтся исходным состояниСм (Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΎΡ‚ΠΊΠ°Ρ‚Π° послС ΠΏΡ€ΠΎΠΈΡΡˆΠ΅Π΄ΡˆΠ΅ΠΉ ошибки), Π»ΠΈΠ±ΠΎ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ вычислСнным Ρ†Π΅Π»Π΅Π²Ρ‹ΠΌ состояниСм (Ссли ошибок Π½Π΅ Π±Ρ‹Π»ΠΎ). Π­Ρ‚ΠΎ β€” строгая гарантия бСзопасности.

Π•Ρ‰Π΅ Π»ΡƒΡ‡ΡˆΠ΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ сбой Π² процСссС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½. Π₯отя для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ это Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‚Π°ΠΊΡƒΡŽ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡŽ слСдуСт ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ для Ρ‚Π°ΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠ°ΠΊ дСструкторы ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ освобоТдСния рСсурсов. Данная гарантия β€” гарантия бСссбойности.

ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅

Базовая, строгая Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ ΠΈ гарантия бСссбойности (извСстная Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ гарантия отсутствия ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ) Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π±Ρ‹Π»ΠΈ описаны Π² [Abrahams96] ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΡˆΠΈΡ€ΠΎΠΊΡƒΡŽ ΠΈΠ·Π²Π΅ΡΡ‚Π½ΠΎΡΡ‚ΡŒ благодаря публикациям [GotW], [Stroustrup00, Β§E.2] ΠΈ [Sutter00], посвящСнным вопросам бСзопасности ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. Π­Ρ‚ΠΈ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π»ΡŽΠ±Ρ‹Ρ… ошибок, нСзависимо ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ использованного ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠΌΠΈ ΠΏΡ€ΠΈ описании бСзопасности ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС. Гарантия бСссбойности являСтся строгим подмноТСством строгой Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ, Π° строгая гарантия, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, являСтся строгим подмноТСством Π±Π°Π·ΠΎΠ²ΠΎΠΉ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС каТдая функция Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΡ‚Ρ€ΠΎΠ³ΡƒΡŽ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½Π° Π² состоянии ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π±Π΅Π· ΠΈΠ·Π»ΠΈΡˆΠ½ΠΈΡ… Π·Π°Ρ‚Ρ€Π°Ρ‚ для Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π½Π΅ трСбуСтся такая ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ. Π’Π°ΠΌ, Π³Π΄Π΅ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, слСдуСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π΄ΠΎΡΡ‚Π°Ρ‚ΠΎΡ‡Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠΉ Π±ΠΎΠ»Π΅Π΅ ΡΡ‚Ρ€ΠΎΠ³ΡƒΡŽ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡŽ ΠΊΠΎΠ΄ ΠΌΠΎΠ³ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Π΅ (см. Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΊ Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ случай vector::insert).

Π’ ΠΈΠ΄Π΅Π°Π»Π΅ слСдуСт ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ всСгда ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΈ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡŽ бСссбойности. НСкоторыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ всСгда ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡŽ, Π² частности, дСструкторы, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ освобоТдСния рСсурсов ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° (см. Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΡŽ 51).

Однако Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ сбои. Если ошибка Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ бСзопасным Π±ΡƒΠ΄Π΅Ρ‚ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: Π»ΠΈΠ±ΠΎ функция выполняСтся ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠ· Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ состояния Π² ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ Ρ†Π΅Π»Π΅Π²ΠΎΠ΅ состояниС, Π»ΠΈΠ±ΠΎ β€” Π² случаС сбоя β€” ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° остаСтся Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ состоянии, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚.Π΅. Π²ΠΈΠ΄ΠΈΠΌΡ‹Π΅ состояния всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² послС сбойного Π²Ρ‹Π·ΠΎΠ²Π° ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ‚Π΅ΠΌΠΈ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ Π΄ΠΎ Π½Π΅Π³ΠΎ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ глобальной Ρ†Π΅Π»ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ с 42 Π½Π° 43), ΠΈ любоС дСйствиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠ³ ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Π΄ΠΎ сбойного Π²Ρ‹Π·ΠΎΠ²Π°, Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ (с Ρ‚Π΅ΠΌ ΠΆΠ΅ смыслом) ΠΈ послС сбойного Π²Ρ‹Π·ΠΎΠ²Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡ‚Π°Ρ‚ΡŒ Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ; ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ++ ΠΊ упомянутой глобальной Ρ†Π΅Π»ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ даст Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 43, Π° Π½Π΅ 44). Вакая гарантия бСзопасности называСтся строгой.