Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ using namespace std

ΠŸΠΎΡ‡Π΅ΠΌΡƒ с ‘using namespace std;’ Π² *.cpp-Ρ„Π°ΠΉΠ»Π°Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠ»ΠΎΡ…ΠΎ

Π’ΠΎ, Ρ‡Ρ‚ΠΎ написано Π½ΠΈΠΆΠ΅, для ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… C++ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ прСкрасно извСстным ΠΈ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ, Π½ΠΎ Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, я пСриодичСски Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽ using namespace std; Π² ΠΊΠΎΠ΄Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Π° Π½Π΅Π΄Π°Π²Π½ΠΎ Π² Π½Π°ΡˆΡƒΠΌΠ΅Π²ΡˆΠ΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΏΡ€ΠΎ впСчатлСния ΠΎΡ‚ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ образования Π±Ρ‹Π»ΠΎ упомянуто, Ρ‡Ρ‚ΠΎ студСнтов Ρ‚Π°ΠΊ ΡƒΡ‡Π°Ρ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π² Π²ΡƒΠ·Π°Ρ…, Ρ‡Ρ‚ΠΎ ΠΈ сподвигло мСня Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ эту Π·Π°ΠΌΠ΅Ρ‚ΠΊΡƒ.

Для Ρ‡Π΅Π³ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π»ΠΈ пространства ΠΈΠΌΠ΅Π½ Π² C++? Когда ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π΄Π²Π΅ сущности (Ρ‚ΠΈΠΏΡ‹, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈ Ρ‚.Π΄.) ΠΈΠΌΠ΅ΡŽΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΏΡ€ΠΈ совмСстном использовании, C++ позволяСт ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ пространства с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова namespace. Всё, Ρ‡Ρ‚ΠΎ объявлСно Π²Π½ΡƒΡ‚Ρ€ΠΈ пространства ΠΈΠΌΠ΅Π½, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ этому пространству ΠΈΠΌΠ΅Π½ (Π° Π½Π΅ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΠΎΠΌΡƒ). Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ using ΠΌΡ‹ вытаскиваСм сущности ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ пространства ΠΈΠΌΠ΅Π½ Π² Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ контСкст.

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ посмотрим, ΠΊ Ρ‡Π΅ΠΌΡƒ это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти.

Допустим, Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π΄Π²Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Foo ΠΈ Bar ΠΈ написали Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ„Π°ΠΉΠ»Π° Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ‚ΠΈΠΏΠ°

. Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²Ρ‹Ρ‚Π°Ρ‰ΠΈΠ² всё, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² foo:: ΠΈ Π² bar:: Π² глобальноС пространство ΠΈΠΌΠ΅Π½.

ВсС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Blah() ΠΈΠ· Foo ΠΈ Quux() ΠΈΠ· Bar. Но ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ Π²Ρ‹ обновляСтС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Foo Π΄ΠΎ Π½ΠΎΠ²ΠΎΠΉ вСрсии Foo 2.0, которая Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΅Ρ‰Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π² сСбС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Quux().

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ вас ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚: ΠΈ Foo 2.0, ΠΈ Bar ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ Quux() Π² вашС глобальноС пространство ΠΈΠΌΠ΅Π½. Π’ Π»ΡƒΡ‡ΡˆΠ΅ΠΌ случаС это Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π½Π° этапС компиляции, ΠΈ исправлСниС этого ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ усилий ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

А Π²ΠΎΡ‚ Ссли Π±Ρ‹ Π²Ρ‹ явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈ Π² ΠΊΠΎΠ΄Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ с Π΅Π³ΠΎ пространством ΠΈΠΌΠ΅Π½, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ, foo::Blah() ΠΈ bar::Quux(), Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ foo::Quux() Π½Π΅ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ.

Но всё ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄Π°ΠΆΠ΅ Ρ…ΡƒΠΆΠ΅!

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

Π˜ΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ пространство ΠΈΠΌΠ΅Π½ std:: ΠΈΠΌΠ΅Π΅Ρ‚ мноТСство ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΡ‡Π΅Π½ΡŒ распространСнными (list, sort, string, iterator, swap), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, скорСС всСго, ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΊΠΎΠ΄Π΅, Π»ΠΈΠ±ΠΎ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, Π² слСдущСй вСрсии стандарта C++ Π² std добавят Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ совпадСт с ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΈΠ· ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² Π² вашСм ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ ΠΊΠΎΠ΄Π΅.

Если Π²Ρ‹ считаСтС это маловСроятным, Ρ‚ΠΎ посмотрим Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ со stackoverflow:

Π’ΠΎΡ‚ Ρ‚ΡƒΡ‚ Π±Ρ‹Π» Π·Π°Π΄Π°Π½ вопрос ΠΎ Ρ‚ΠΎΠΌ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ Ρ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, Ρ‡Ρ‚ΠΎ ΠΎΡ‚ Π½Π΅Π³ΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ. По Ρ„Π°ΠΊΡ‚Ρƒ Ρ‚Π°ΠΌ происходит ΠΈΠΌΠ΅Π½Π½ΠΎ описанноС Π²Ρ‹ΡˆΠ΅: Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π½ΠΎ это Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ компиляции, Π° компилятор просто ΠΌΠΎΠ»Ρ‡Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ вмСсто объявлСнной Π²Ρ‹ΡˆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ distance() Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ std::distance() ΠΈΠ· std:: ΡΡ‚Π°Π²ΡˆΠ΅Π³ΠΎ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌ нСймспСйсом.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° Ρ‚Ρƒ ΠΆΠ΅ Ρ‚Π΅ΠΌΡƒ: вмСсто Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ swap() ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ std::swap(). ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ошибки компиляции, Π° просто Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ происходит Π³ΠΎΡ€Π°Π·Π΄ΠΎ Ρ‡Π°Ρ‰Π΅, Ρ‡Π΅ΠΌ каТСтся.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π˜Π·ΡƒΡ‡Π°Π΅ΠΌ C++. Π§Π°ΡΡ‚ΡŒ 8. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ пространства ΠΈΠΌΡ‘Π½

РазбираСмся, ΠΊΠ°ΠΊ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΊΠΎΠ΄ΠΎΠΌ Π² нСсколько Ρ€Π°Π·, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ using namespace std. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ using namespace std. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ using namespace std. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ using namespace std. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ using namespace std

Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ using namespace std. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ using namespace std. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ using namespace std. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ using namespace std. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ using namespace std

Π­Ρ‚ΠΎ восьмая Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠ· сСрии статСй Β«Π“Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ ΠΏΠΎΠ³Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Π² C++Β». Π’ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ ΡƒΠ·Π½Π°Π»ΠΈ, ΠΊΠ°ΠΊ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² массивах. БСгодня β€” Π΅Ρ‰Ρ‘ интСрСснСС.

НСдавно ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡƒΠΆΠ΅ написаны Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Ρ‹ Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Если такая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состав языка ΠΈΠ»ΠΈ находится Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ доступС, Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ всС Π΅Ρ‘ возмоТности.

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

Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ using namespace std. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ using namespace std. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ using namespace std. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ using namespace std. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ using namespace std

ΠŸΠΈΡˆΠ΅Ρ‚ ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, Π² свободноС врСмя создаСт ΠΈΠ³Ρ€Ρ‹. ΠœΠ΅Ρ‡Ρ‚Π°Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ свою ΡΡ‚ΡƒΠ΄ΠΈΡŽ ΠΈ Π²Ρ‹ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π»Π°ΠΌΠΏΠΎΠ²Ρ‹Π΅ RPG.

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΡ‘Π½ Π² C++

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΡ‘Π½ (Π°Π½Π³Π». namespace) β€” это Π³Ρ€ΡƒΠΏΠΏΠ° взаимосвязанных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, констант, классов, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π‘ самого Π½Π°Ρ‡Π°Π»Π° изучСния C++ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ std: cout, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π». На самом Π΄Π΅Π»Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° называСтся просто cout, Π° std β€” это пространство ΠΈΠΌΡ‘Π½, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½Π° находится.

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΡ‘Π½ Π½ΡƒΠΆΠ½Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ логичСски ΡΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ части ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. НапримСр, матСматичСскиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, физичСскиС, бухгалтСрскиС ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ создания пространства ΠΈΠΌΡ‘Π½:

ΠœΡ‹ объСдиняСм Π² Π³Ρ€ΡƒΠΏΠΏΡƒ нСсколько Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ ΠΈΠ·Π±Π΅Π³Π°Π΅ΠΌ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΈΠΌΡ‘Π½. Π­Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΈΠ· ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹Ρ… Π²Π°ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ функция, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ sum (). По пространству ΠΈΠΌΡ‘Π½ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΠΉΠΌΡ‘Ρ‚, какая ΠΈΠΌΠ΅Π½Π½ΠΎ функция Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π°.

Если ΠΆΠ΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ using:

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΊΠΎΠΌΠ°Π½Π΄Π° Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Π½Π° ΠΈΠ· mynames ΠΈ std, поэтому Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ошибки Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚.

Π’Π°ΠΊΠΆΠ΅ послС using ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π΅ Ρ†Π΅Π»ΠΎΠ΅ пространство ΠΈΠΌΡ‘Π½, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ:

Π€Π°ΠΉΠ»Ρ‹ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² Π² C++

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΡ‘Π½ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π²Ρ‹ΡˆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ пСрСнСсти Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² основном Ρ„Π°ΠΉΠ»Π΅.

Π—Π΄Π΅ΡΡŒ Π½Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ main (), ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ этот ΠΊΠΎΠ΄ β€” Π½Π΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‚ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π° здСсь Π½Π΅ Π½ΡƒΠΆΠ½Π°. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ iostream, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π΅ собираСмся Π½ΠΈΡ‡Π΅Π³ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ, Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² свой Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π»ΡŽΠ±Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹.

ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ mylib.h Π² ΠΏΠ°ΠΏΠΊΡƒ, Π³Π΄Π΅ находится ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π—Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² Π½Π°Ρ‡Π°Π»ΠΎ ΠΊΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ вмСсто ΡƒΠ³Π»ΠΎΠ²Ρ‹Ρ… скобок: ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ², Π° Π²Ρ‚ΠΎΡ€Ρ‹Π΅ β€” для систСмных.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ вСсь Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» ΠΈΠ· этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ:

Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ:

Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ using namespace std. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ using namespace std. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ using namespace std. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ using namespace std. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ using namespace std

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ функция pow, ΠΊΠ°ΠΊ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ матСматичСскиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, сущСствуСт Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ cmath.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ пространства ΠΈΠΌΡ‘Π½ β€” это ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ инструмСнты для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. Π’ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅ Π΅ΡΡ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для Π»ΡŽΠ±Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, поэтому ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚ΠΎΠ΄Π°Ρ‚Π΅Π»ΠΈ ΠΈΡ‰ΡƒΡ‚ спСциалистов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅.

Если Π²Ρ‹ часто Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π½Π°Π΄ ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ для сСбя Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π΅Ρ‘ Π²ΠΎ всС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ. Однако Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°ΠΌ стоит ΡΡ‚Π°Ρ€Π°Ρ‚ΡŒΡΡ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π·Π°Π½ΠΎΠ²ΠΎ β€” Ρ‚Π°ΠΊ Π²Ρ‹ смоТСтС Π΅Π³ΠΎ постоянно ΠΏΠ΅Ρ€Π΅ΠΎΡΠΌΡ‹ΡΠ»ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚ΡŒ Ρ‚ΠΎ, Ρ‡Π΅Π³ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅ Π½Π΅ Π·Π°ΠΌΠ΅Ρ‡Π°Π»ΠΈ.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ Π‘++, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ наш курс. Π’ Π½Ρ‘ΠΌ всС аспСкты языка Ρ€Π°Π·Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΈ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅, Π° Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ задания Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ связь ΠΎΡ‚ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π£Ρ€ΠΎΠΊ β„–54. using-стСйтмСнты

Обновл. 13 БСн 2021 |

Если Π²Ρ‹ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ C++, Ρ‚ΠΎ постоянноС Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ std:: ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько ΡƒΡ‚ΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Π½Π΅ ΠΏΡ€Π°Π²Π΄Π° Π»ΠΈ? Π―Π·Ρ‹ΠΊ C++ прСдоставляСт Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ Π² Π²ΠΈΠ΄Π΅ using-стСйтмСнтов.

ИспользованиС «using-объявлСния»

Одной ΠΈΠ· Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ² являСтся использованиС Β«using-объявлСния». Π’ΠΎΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Β«Hello, world!Β» с Β«using-объявлСниСм» Π² строкС β„–5:

ИспользованиС Β«using-Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹Β»

Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΎΠΉ являСтся использованиС Β«using-Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹Β». Π’ΠΎΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Β«Hello, world!Β» с Β«using-Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉΒ» Π² строкС β„–5:

Много Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² спорят насчСт использования Β«using-Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹Β». Π’Π°ΠΊ ΠΊΠ°ΠΊ с Π΅Ρ‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΡ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π’Π‘Π• ΠΈΠΌΠ΅Π½Π° ΠΈΠ· пространства ΠΈΠΌΠ΅Π½ std, Ρ‚ΠΎ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ возникновСния ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΈΠΌΠ΅Π½ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ возрастаСт (Π½ΠΎ всС ΠΆΠ΅ эта Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π² глобальном ΠΌΠ°ΡΡˆΡ‚Π°Π±Π΅ остаСтся Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ). using namespace std; сообщаСт компилятору, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ всё, Ρ‡Ρ‚ΠΎ находится Π² пространствС ΠΈΠΌΠ΅Π½ std, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ, Ссли компилятор Π½Π°ΠΉΠ΄Π΅Ρ‚ имя, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ смоТСт Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Ρ‚ΡŒ, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π΅Π³ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π² пространствС ΠΈΠΌΠ΅Π½ std.

Π‘ΠΎΠ²Π΅Ρ‚: Π‘Ρ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ использования Β«using-Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹Β» (насколько это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° c Β«using-Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉΒ»

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π³Π΄Π΅ использованиС Β«using-Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹Β» создаСт Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΡΡ‚ΡŒ:

Π—Π΄Π΅ΡΡŒ компилятор Π½Π΅ смоТСт ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΈ Π΅ΠΌΡƒ std::cout ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ cout(), ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ сами. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ нСоднозначности. Π₯ΠΎΡ‚ΡŒ это ΠΈ Π±Π°Π½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½ΠΎ Ссли Π±Ρ‹ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ прСфикс std:: ΠΊ cout:

Или использовали Π±Ρ‹ Β«using-объявлСниС» вмСсто Β«using-Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹Β»:

Π’ΠΎΠ³Π΄Π° наша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±Ρ‹Π»Π° Π±Ρ‹ Π±Π΅Π· ошибок.

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ программистов ΠΈΠ·Π±Π΅Π³Π°ΡŽΡ‚ использования Β«using-Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹Β» ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎ этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅. Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ это ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΡ‹ΠΌ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Β«using-Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°Β» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сокращаСт ΠΌΠ°ΡΡˆΡ‚Π°Π±Ρ‹ возникновСния ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΈΠΌΠ΅Π½).

ΠžΠ±Π»Π°ΡΡ‚ΠΈ видимости Β«using-объявлСния» ΠΈ Β«using-Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹Β»

Если Β«using-объявлСниС» ΠΈΠ»ΠΈ Β«using-Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°Β» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Π±Π»ΠΎΠΊΠ΅, Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ этого Π±Π»ΠΎΠΊΠ° (ΠΏΠΎ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ локальной области видимости). Π­Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ ΠΌΠ°ΡΡˆΡ‚Π°Π±Ρ‹ возникновСния ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΈΠΌΠ΅Π½ Π΄ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ². Однако ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ программисты ΠΏΠΈΡˆΡƒΡ‚ Β«using-Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΡƒΒ» Π² глобальной области видимости (Π²Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ main() ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π²Π½Π΅ Π»ΡŽΠ±Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ). Π­Ρ‚ΠΈΠΌ ΠΎΠ½ΠΈ Π²Ρ‹Ρ‚Π°ΡΠΊΠΈΠ²Π°ΡŽΡ‚ всС ΠΈΠΌΠ΅Π½Π° ΠΈΠ· пространства ΠΈΠΌΠ΅Π½ std Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π² Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости, Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ увСличивая Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ возникновСния ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΈΠΌΠ΅Π½. А это ΡƒΠΆΠ΅ Π½Π΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ.

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ: Никогда Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ using-стСйтмСнты Π²Π½Π΅ Ρ‚Π΅Π»Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

ΠžΡ‚ΠΌΠ΅Π½Π°/Π·Π°ΠΌΠ΅Π½Π° using-стСйтмСнтов

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ using-стСйтмСнт Π±Ρ‹Π» объявлСн, Π΅Π³ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠΌ using-стСйтмСнтом Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… области видимости, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ Π±Ρ‹Π» объявлСн. НапримСр:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

6.12 – ОбъявлСния using ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ using

Π’Ρ‹, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, Π²ΠΈΠ΄Π΅Π»ΠΈ эту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ°Ρ… ΠΈ ΡƒΡ‡Π΅Π±Π½Ρ‹Ρ… руководствах:

НСкоторыС старыС компиляторы Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ с Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Если Π²Ρ‹ это Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π±Π΅Π³ΠΈΡ‚Π΅. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ваш ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ, руководство ΠΈΠ»ΠΈ компилятор устарСли. Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ выясним, ΠΏΠΎΡ‡Π΅ΠΌΡƒ.

ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ ΡƒΡ€ΠΎΠΊ истории

ΠŸΠ΅Ρ€Π΅Π½Π΅ΡΠ΅ΠΌΡΡ Π² сСгодняшний дСнь – Ссли Π²Ρ‹ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, Π½Π°Π±ΠΈΡ€Π°Π½ΠΈΠ΅ std:: ΠΏΠ΅Ρ€Π΅Π΄ всСм, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΈΠ· стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰Π΅ΠΉΡΡ Ρ€ΡƒΡ‚ΠΈΠ½ΠΎΠΉ, Π° Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚ΡŒ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ вашСго ΠΊΠΎΠ΄Π°.

Но сначала Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Π΄Π²Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°.

ΠŸΠΎΠ»Π½Ρ‹Π΅ ΠΈ Π½Π΅ΠΏΠΎΠ»Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π°

Имя ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΌ ΠΈΠ»ΠΈ Π½Π΅ΠΏΠΎΠ»Π½Ρ‹ΠΌ.

ПолноС имя – это имя, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости. Π§Π°Ρ‰Π΅ всСго ΠΈΠΌΠ΅Π½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ пространством ΠΈΠΌΠ΅Π½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ области видимости ( :: ). НапримСр:

Для ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Ρ… Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉ

НСполноС имя – это имя, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ области видимости. НапримСр, cout ΠΈ x ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ΠΏΠΎΠ»Π½Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости.

ОбъявлСния using

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ using

Π’ΠΎΡ‚ снова наша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Hello World с Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ using Π² строкС 5:

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ using – это Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±Ρ‹Π»ΠΎ прСдоставлСно для Π±Π°Π· старого ΠΊΠΎΠ΄Π° Π΄ΠΎ пространства ΠΈΠΌΠ΅Π½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ использовали Π½Π΅ΠΏΠΎΠ»Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π½Π΅ΠΏΠΎΠ»Π½ΠΎΠ΅ имя Π΄ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ (Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ рискованно), ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ using (Ρ‚.Π΅. using namespace std; ) Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, ΠΈ всС ΠΈΠΌΠ΅Π½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ Π² пространство ΠΈΠΌΠ΅Π½ std всё Π΅Ρ‰Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΏΠΎΠ»Π½Ρ‹ΠΌΠΈ.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°ΠΌΠΈ using

Однако для соврСмСнного ΠΊΠΎΠ΄Π° C++ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ using Π΄Π°ΡŽΡ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ‹Π³ΠΎΠ΄Ρ‹ (экономия Π½Π° Π²Π²ΠΎΠ΄Π΅ тСкста) ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с риском.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ using ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ всС ΠΈΠΌΠ΅Π½Π° ΠΈΠ· пространства ΠΈΠΌΠ΅Π½ (ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ мноТСство ΠΈΠΌΠ΅Π½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ), Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ возникновСния ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΈΠΌΠ΅Π½ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ возрастаСт (особСнно, Ссли Π²Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ пространство ΠΈΠΌΠ΅Π½ std ).

Для наглядности рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ using Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ:

Π’ΠΎΡ‚ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠ²Π°Ρ€Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

ΠΈΠ»ΠΈ использовалось объявлСниС using вмСсто Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ using :

Ρ‚ΠΎΠ³Π΄Π° наша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΈΠΌΠ΅Π»Π° Π±Ρ‹ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

Π”Π°ΠΆΠ΅ Ссли Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ using Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΈΠΌΠ΅Π½ сСгодня, ΠΎΠ½ΠΈ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ уязвимым для Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ². НапримСр, Ссли ваш ΠΊΠΎΠ΄ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ using для ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, которая Π·Π°Ρ‚Π΅ΠΌ обновляСтся, всС Π½ΠΎΠ²Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π°, прСдставлСнныС Π² ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚Π°ΠΌΠΈ Π½Π° ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΈΠΌΠ΅Π½ с вашим ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.

ΠœΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΈ Π±ΠΎΠ»Π΅Π΅ коварная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. Π’ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ функция, которая Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎ ΠΆΠ΅ имя, Π½ΠΎ ΠΈ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС компилятор ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΎΡ‚Π΄Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ измСнится.

Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ:

Когда компилятор встрСчаСт Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, с ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ этот Π²Ρ‹Π·ΠΎΠ². ΠŸΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΠ½ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Ρ‚ Ρ‚Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ прСобразования Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π° Π½Π΅ Ρ‚Ρƒ, которая Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ прСобразования Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π»ΠΈΡ‚Π΅Ρ€Π°Π» 0 ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ цСлочислСнному Ρ‚ΠΈΠΏΡƒ, C++ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Ρ‚ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ someFcn(0) с Π½Π΅Π΄Π°Π²Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠΉ someFcn(int) (Π±Π΅Π· ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ), Π° Π½Π΅ с someFcn(double) (трСбуСтся ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· int Π² double). Π­Ρ‚ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π­Ρ‚ΠΎΠ³ΠΎ Π±Ρ‹ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ, Ссли Π±Ρ‹ ΠΌΡ‹ использовали объявлСниС using ΠΈΠ»ΠΈ явный ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ области видимости.

ΠžΠ±Π»Π°ΡΡ‚ΡŒ видимости объявлСний ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² using

Если объявлСниС using ΠΈΠ»ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° using ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π±Π»ΠΎΠΊΠ΅, ΠΈΠΌΠ΅Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² этом Π±Π»ΠΎΠΊΠ΅ (ΠΎΠ½ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ области видимости Π±Π»ΠΎΠΊΠ°). Π­Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сниТаСт Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ возникновСния ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΈΠΌΠ΅Π½ Π²Π½ΡƒΡ‚Ρ€ΠΈ этого Π±Π»ΠΎΠΊΠ°.

Если объявлСниС using ΠΈΠ»ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° using ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² глобальном пространствС ΠΈΠΌΠ΅Π½, ΠΈΠΌΠ΅Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ ΠΊΠΎ всСму ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ (ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости Ρ„Π°ΠΉΠ»Π°).

ΠžΡ‚ΠΌΠ΅Π½Π° ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Π½Π° инструкции using

ПослС объявлСния инструкции using Π΅Π΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π΅ Π΄Ρ€ΡƒΠ³ΠΎΠΉ инструкциСй using Π² Ρ‚ΠΎΠΉ области видимости, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½Π° Π±Ρ‹Π»Π° объявлСна.

Π›ΡƒΡ‡ΡˆΠ΅Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, – это Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ с самого Π½Π°Ρ‡Π°Π»Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости инструкции using с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€Π°Π²ΠΈΠ» области видимости Π±Π»ΠΎΠΊΠ°.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, всСй этой Π³ΠΎΠ»ΠΎΠ²Π½ΠΎΠΉ Π±ΠΎΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ, Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ явным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ области видимости ( :: ).

Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ для инструкций using

Π’ соврСмСнном C++ Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅Ρ‚ мСста для использования Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ². Они ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ ΠΈΠΌΠ΅Π½ сСйчас ΠΈ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠ²Π°Ρ€Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π₯отя Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ°Ρ… ΠΈ руководствах ΠΎΠ½ΠΈ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ, использования Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² Π»ΡƒΡ‡ΡˆΠ΅ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ.

ОбъявлСния using ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ бСзопасными для использования Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠΎΠ². ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΡŒΡ‚Π΅ ΠΈΡ… использованиС Π² глобальном пространствС ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ² исходного ΠΊΠΎΠ΄Π° ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΈΡ… Π² глобальном пространствС ΠΈΠΌΠ΅Π½ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ².

Π›ΡƒΡ‡ΡˆΠ°Ρ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½ (C++)

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ объявлСниС пространства ΠΈΠΌΠ΅Π½ ΠΈ продСмонстрированы Ρ‚Ρ€ΠΈ способа доступа ΠΊ Ρ‡Π»Π΅Π½Π°ΠΌ пространства ΠΈΠΌΠ΅Π½ ΠΈΠ· ΠΊΠΎΠ΄Π° Π·Π° Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ.

ИспользованиС полного имСни:

Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости ΠΎΠ΄ΠΈΠ½ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ объявлСниС using:

Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости всС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ пространства ΠΈΠΌΠ΅Π½, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ using:

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ using

using Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ всС ΠΈΠΌΠ΅Π½Π° Π² namespace для использования Π±Π΅Π· using Π² качСствС явного ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°. ИспользованиС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ using Π² Ρ„Π°ΠΉΠ»Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (Ρ‚. Π΅. *. cpp) ΠΏΡ€ΠΈ использовании Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² Π² пространствС ΠΈΠΌΠ΅Π½; Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π΄Π²Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°, рассмотритС использованиС объявлСния using, Ρ‡Ρ‚ΠΎΠ±Ρ‹ привСсти эти ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, Π° Π½Π΅ всС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π² пространствС ΠΈΠΌΠ΅Π½. Если локальная пСрСмСнная ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅ имя, ΠΊΠ°ΠΊ ΠΈ пСрСмСнная пространства ΠΈΠΌΠ΅Π½, Ρ‚ΠΎ пСрСмСнная пространства ΠΈΠΌΠ΅Π½ Π±ΡƒΠ΄Π΅Ρ‚ скрытой. Π‘ΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ пространства ΠΈΠΌΠ΅Π½ с Ρ‚Π΅ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ Ρƒ глобальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, являСтся ошибкой.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ using ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ Ρ‡Π°ΡΡ‚ΡŒ CPP-Ρ„Π°ΠΉΠ»Π° (Π² области видимости Ρ„Π°ΠΉΠ»Π°) ΠΈΠ»ΠΈ Π²Π½ΡƒΡ‚Ρ€ΡŒ опрСдСлСния класса ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π‘Π΅Π· особой нСобходимости Π½Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΠΉΡ‚Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ using Π² Ρ„Π°ΠΉΠ»Π°Ρ… Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² (*.h), Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ любой Ρ„Π°ΠΉΠ», содСрТащий этот Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ всС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ пространства ΠΈΠΌΠ΅Π½ Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ скрытиС ΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΈΠΌΠ΅Π½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ. Π’ Ρ„Π°ΠΉΠ»Π°Ρ… Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² всСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠΎΠ»Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π°. Если эти ΠΈΠΌΠ΅Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ слишком Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ псСвдоним пространства ΠΈΠΌΠ΅Π½ для ΠΈΡ… сокращСния. (Π‘ΠΌ. Π½ΠΈΠΆΠ΅.)

ОбъявлСниС пространств ΠΈΠΌΠ΅Π½ ΠΈ ΠΈΡ… Ρ‡Π»Π΅Π½ΠΎΠ²

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, пространство ΠΈΠΌΠ΅Π½ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ Π² Ρ„Π°ΠΉΠ»Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°. Если Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ находятся Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅, опрСдСляйтС ΠΈΠΌΠ΅Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

Π Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² контосодата. cpp Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΠ΅ имя, Π΄Π°ΠΆΠ΅ Ссли ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ using Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ Π² Π½Π°Ρ‡Π°Π»ΠΎ Ρ„Π°ΠΉΠ»Π°:

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ объявлСно Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π±Π»ΠΎΠΊΠ°Ρ… Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ ΠΈ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ…. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ соСдинит вмСстС всС части Π²ΠΎ врСмя ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ пространство ΠΈΠΌΠ΅Π½ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ всС Ρ‡Π»Π΅Π½Ρ‹, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π²ΠΎ всСх частях. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ этого являСтся пространство ΠΈΠΌΠ΅Π½ std, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Π² стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅.

Π§Π»Π΅Π½Ρ‹ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ пространства ΠΈΠΌΠ΅Π½ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ Π·Π° Π΅Π³ΠΎ Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ, Ссли ΠΎΠ½ΠΈ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΠΏΡƒΡ‚Π΅ΠΌ явной ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ опрСдСляСмого пространства ΠΈΠΌΠ΅Π½. Однако ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ послС Ρ‚ΠΎΡ‡ΠΊΠΈ объявлСния Π² пространствС ΠΈΠΌΠ΅Π½, ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰Π΅ΠΌ Ρ‚ΠΎ пространство ΠΈΠΌΠ΅Π½, Π³Π΄Π΅ находится объявлСниС. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Π­Ρ‚Π° ошибка ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρ‡Π»Π΅Π½Ρ‹ пространства ΠΈΠΌΠ΅Π½ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ… Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΈ эти Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ порядкС.

Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½ΠΎΠ΅ пространство ΠΈΠΌΠ΅Π½

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½ std

Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ пространства ΠΈΠΌΠ΅Π½

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ пространство ΠΈΠΌΠ΅Π½ ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ΠΏΠΎΠ»Π½Ρ‹ΠΉ доступ ΠΊ Ρ‡Π»Π΅Π½Π°ΠΌ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ элСмСнта, Π½ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ элСмСнты Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π½Π΅ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ доступа ΠΊ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌΡƒ пространству ΠΈΠΌΠ΅Π½ (Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ½ΠΎ Π½Π΅ объявлСно ΠΊΠ°ΠΊ встроСнноС), ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

ΠžΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ пространства ΠΈΠΌΠ΅Π½ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для инкапсуляции Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ интСрфСйса Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ пространства ΠΈΠΌΠ΅Π½.

ВстроСнныС пространства ΠΈΠΌΠ΅Π½ (C++ 11)

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

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ пространствС ΠΈΠΌΠ΅Π½ шаблона, объявлСнного Π²ΠΎ встроСнном пространствС ΠΈΠΌΠ΅Π½.

ВстроСнныС пространства ΠΈΠΌΠ΅Π½ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ управлСния вСрсиями для управлСния измСнСниями Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ интСрфСйсС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ пространство ΠΈΠΌΠ΅Π½ ΠΈ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ интСрфСйса Π² своСм собствСнном пространствС ΠΈΠΌΠ΅Π½, Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅. ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ содСрТит ΡΠ°ΠΌΡƒΡŽ послСднюю ΠΈΠ»ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, квалифицируСтся ΠΊΠ°ΠΊ встроСнноС ΠΈ поэтому прСдставляСтся Ρ‚Π°ΠΊ, Π±ΡƒΠ΄Ρ‚ΠΎ ΠΎΠ½ΠΎ являСтся нСпосрСдствСнным Ρ‡Π»Π΅Π½ΠΎΠΌ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ пространства ΠΈΠΌΠ΅Π½. ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠΈΠΉ ΠΊΠΎΠ΄, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Parent::Class, автоматичСски привязываСтся ΠΊ Π½ΠΎΠ²ΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρƒ. ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚Π°Ρ€ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π½Π΅ΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌΡƒ пространству ΠΈΠΌΠ΅Π½, содСрТащСму Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄.

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово inline Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ объявлСнию пространства ΠΈΠΌΠ΅Π½ Π² Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ компиляции.

ΠŸΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΡ‹ пространств ΠΈΠΌΠ΅Π½

ИмСна пространств ΠΈΠΌΠ΅Π½ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ, ΠΈΠ·-Π·Π° Ρ‡Π΅Π³ΠΎ Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΠΎΠ½ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ Π½Π΅ слишком ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌΠΈ. Если Π΄Π»ΠΈΠ½Π° ΠΈΠΌΠ΅Π½ΠΈ затрудняСт Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ ΡƒΡ‚ΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°, Π³Π΄Π΅ нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ using, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ псСвдоним пространства ΠΈΠΌΠ΅Π½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ слуТит Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ для фактичСского ΠΈΠΌΠ΅Π½ΠΈ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ ΠΈΠ»ΠΈ бСзымянныС пространства ΠΈΠΌΠ΅Π½

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ явноС пространство ΠΈΠΌΠ΅Π½, Π½ΠΎ Π½Π΅ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π΅ΠΌΡƒ имя.

Π­Ρ‚ΠΎ называСтся бСзымянным ΠΈΠ»ΠΈ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΌ пространством ΠΈΠΌΠ΅Π½, ΠΈ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ссли Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌΠΈ для ΠΊΠΎΠ΄Π° Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ… (Ρ‚. Π΅. ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΈΡ… Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΡƒ) Π±Π΅Π· создания ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ пространства ΠΈΠΌΠ΅Π½. Π’Π΅ΡΡŒ ΠΊΠΎΠ΄, находящийся Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ Ρ„Π°ΠΉΠ»Π΅, ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π² бСзымянном пространствС ΠΈΠΌΠ΅Π½, Π½ΠΎ эти ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ само пространство ΠΈΠΌΠ΅Π½, Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ этого Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ, Ρ‚ΠΎΡ‡Π½Π΅Π΅, Π²Π½Π΅ Π±Π»ΠΎΠΊΠ° ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π°.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *