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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π·Ρ‹ΠΊ программирования C++. ΠŸΡΡ‚ΠΎΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 266

Автор Π‘Ρ‚Π΅Π½Π»ΠΈ Π›ΠΈΠΏΠΏΠΌΠ°Π½

 class Query_base { /* ... */};

 // Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠ΄ ΠΈΠ· Fourth Edition

}

ΠžΠ±Ρ‰Π΅Π΅ пространство ΠΈΠΌΠ΅Π½ cplusplus_primer Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΎ Π±Ρ‹ опрСдСлСния ΠΎΠ±ΠΎΠΈΡ… пространств ΠΈΠΌΠ΅Π½. НапримСр, с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ пространство ΠΈΠΌΠ΅Π½ Π±Ρ‹Π»ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, пространство ΠΈΠΌΠ΅Π½ cplusplus_primer ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

namespace cplusplus_primer {

#include "FifthEd.h"

#include "FourthEd.h"

}

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ пространство ΠΈΠΌΠ΅Π½ FifthEd встраиваСмоС, ΠΊΠΎΠ΄ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΉΡΡ ΠΊ ΠΈΠΌΠ΅Π½ΠΈ ΠΈΠ· пространства ΠΈΠΌΠ΅Π½ cplusplus_primer::, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ Π²Π΅Ρ€ΡΠΈΡŽ ΠΈΠ· этого пространства ΠΈΠΌΠ΅Π½. Если понадобится ΠΊΠΎΠ΄ ΠΏΡ€Π΅ΠΆΠ½Π΅Π³ΠΎ издания, ΠΊ Π½Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌΡƒ пространству ΠΈΠΌΠ΅Π½, ΡƒΠΊΠ°Π·Π°Π² всС ΠΈΠΌΠ΅Π½Π° ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰ΠΈΡ… пространств ΠΈΠΌΠ΅Π½, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: cplusplus_primer::FourthEd::Query_base.

БСзымянныС пространства ΠΈΠΌΠ΅Π½

Π£ бСзымянного пространства ΠΈΠΌΠ΅Π½ (unnamed namespace) сразу Π·Π° ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом namespace слСдуСт Π±Π»ΠΎΠΊ объявлСний, Ρ€Π°Π·Π³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Ρ… Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹ΠΌΠΈ скобками. Π£ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² бСзымянном пространствС ΠΈΠΌΠ΅Π½, статичСская ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ сущСствования: ΠΎΠ½ΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΡ… ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ использованиСм ΠΈ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

БСзымянноС пространство ΠΈΠΌΠ΅Π½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·ΠΎΠ±Ρ‰Π΅Π½ΠΎ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, Π½ΠΎ Π½Π΅ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ². Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π΅ΡΡ‚ΡŒ собствСнноС бСзымянноС пространство ΠΈΠΌΠ΅Π½. Если Π΄Π²Π° Ρ„Π°ΠΉΠ»Π° содСрТат бСзымянныС пространства ΠΈΠΌΠ΅Π½, эти пространства ΠΈΠΌΠ΅Π½ Π½Π΅ связаны. Оба бСзымянных пространства ΠΈΠΌΠ΅Π½ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ имя, ΠΈ эти опрСдСлСния Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚ΡŒΡΡ ΠΊ Ρ€Π°Π·Π½Ρ‹ΠΌ сущностям. Если Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ опрСдСляСт бСзымянноС пространство ΠΈΠΌΠ΅Π½, Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π° Π² этом пространствС ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ сущности, Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… пространств ΠΈΠΌΠ΅Π½, бСзымянноС пространство являСтся Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ нСсколько Ρ„Π°ΠΉΠ»ΠΎΠ².

ИмСна, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² бСзымянном пространствС ΠΈΠΌΠ΅Π½, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ нСпосрСдствСнно; Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², для ΠΈΡ… ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ пространства ΠΈΠΌΠ΅Π½. Для обращСния ΠΊ Ρ‡Π»Π΅Π½Π°ΠΌ бСзымянных пространств ΠΈΠΌΠ΅Π½ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ области видимости.

ИмСна, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² бСзымянном пространствС ΠΈΠΌΠ΅Π½, находятся Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ области видимости, Ρ‡Ρ‚ΠΎ ΠΈ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ пространство ΠΈΠΌΠ΅Π½. Если бСзымянноС пространство ΠΈΠΌΠ΅Π½ опрСдСляСтся Π² Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ области видимости Ρ„Π°ΠΉΠ»Π°, Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π° Π² бСзымянном пространствС ΠΈΠΌΠ΅Π½ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ ΠΈΠΌΠ΅Π½, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² глобальной области видимости:

int i; // глобальноС объявлСниС для i

namespace {

 int i;

}

// Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ: ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ глобально ΠΈ Π² Π½Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌ, бСзымянном

// пространствС ΠΈΠΌΠ΅Π½

i = 10;

Π’ΠΎ всСм ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΌ Ρ‡Π»Π΅Π½Ρ‹ бСзымянного пространства ΠΈΠΌΠ΅Π½ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ сущностями ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. БСзымянноС пространство ΠΈΠΌΠ΅Π½, ΠΊΠ°ΠΊ ΠΈ любоС Π΄Ρ€ΡƒΠ³ΠΎΠ΅ пространство ΠΈΠΌΠ΅Π½, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅ пространство ΠΈΠΌΠ΅Π½. Если бСзымянноС пространство ΠΈΠΌΠ΅Π½ вкладываСтся, Ρ‚ΠΎ ΠΊ содСрТащимся Π² Π½Π΅ΠΌ ΠΈΠΌΠ΅Π½Π°ΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ способом, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΈΠΌΠ΅Π½Π° ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰Π΅Π³ΠΎ пространства ΠΈΠΌΠ΅Π½:

namespace local {

 namespace {

  int i;

 }

}

// ok: i ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌ бСзымянном пространствС ΠΈΠΌΠ΅Π½

// ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ i

local::i = 42;

БСзымянныС пространства ΠΈΠΌΠ΅Π½ вмСсто статичСских Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

Π”ΠΎ ввСдСния пространств ΠΈΠΌΠ΅Π½ Π² стандарт Π‘++, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ для Ρ„Π°ΠΉΠ»Π°, ΠΈΡ… ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ статичСскими (static). ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ статичСских Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (file static) унаслСдовано ΠΎΡ‚ языка Π‘. Π’ языкС Π‘ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΉ статичСским Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π±Ρ‹Π» Π½Π΅Π²ΠΈΠ΄ΠΈΠΌ Π²Π½Π΅ Ρ‚ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ объявлСн.

Π’ соотвСтствии со стандартом Π‘++ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ объявлСний статичСских Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π΅ рСкомСндуСтся. ВмСсто Π½ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ бСзымянныС пространства ΠΈΠΌΠ΅Π½.

УпраТнСния Ρ€Π°Π·Π΄Π΅Π»Π° 18.2.1

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 18.12. ΠžΡ€Π³Π°Π½ΠΈΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, написанныС Π² упраТнСниях ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π³Π»Π°Π², Π² ΠΈΡ… собствСнныС пространства ΠΈΠΌΠ΅Π½. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, пространство ΠΈΠΌΠ΅Π½ chapter15 содСрТало Π±Ρ‹ ΠΊΠΎΠ΄ для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ запросов, a chapter10 β€” ΠΊΠΎΠ΄ прилоТСния TextQuery. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ эту структуру, ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° прилоТСния Query.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 18.13. Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ бСзымянныС пространства ΠΈΠΌΠ΅Π½?

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 18.14. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, имССтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ объявлСниС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° operator*, ΡΠ²Π»ΡΡŽΡ‰Π΅Π³ΠΎΡΡ Ρ‡Π»Π΅Π½ΠΎΠΌ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ пространства ΠΈΠΌΠ΅Π½ mathLib::MatrixLib:

namespace mathLib {

 namespace MatrixLib {

  class matrix { /* ... */ };

  matrix operator*

   (const matrix &, const matrix &);

  // ...

 }

}

Как ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ этот ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π² глобальной области видимости?

18.2.2. ИспользованиС Ρ‡Π»Π΅Π½ΠΎΠ² пространства ΠΈΠΌΠ΅Π½

ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Ρ‡Π»Π΅Π½Ρƒ пространства ΠΈΠΌΠ΅Π½ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ имя_пространства_ΠΈΠΌΠ΅Π½::имя_Ρ‡Π»Π΅Π½Π° являСтся чСрСсчур Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΌ, особСнно ΠΊΠΎΠ³Π΄Π° имя пространства ΠΈΠΌΠ΅Π½ слишком Π΄Π»ΠΈΠ½Π½ΠΎΠ΅. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ способы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‚ использованиС ΠΈΠΌΠ΅Π½ Ρ‡Π»Π΅Π½ΠΎΠ² пространства ΠΈΠΌΠ΅Π½. Один ΠΈΠ· этих способов, объявлСниС using (см. Ρ€Π°Π·Π΄Π΅Π» 3.1), ΡƒΠΆΠ΅ использовался Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅. Π”Ρ€ΡƒΠ³ΠΈΠ΅ способы, псСвдонимы пространств ΠΈΠΌΠ΅Π½ ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ using Π±ΡƒΠ΄ΡƒΡ‚ описаны Π² этом Ρ€Π°Π·Π΄Π΅Π»Π΅.

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

ПсСвдоним пространства ΠΈΠΌΠ΅Π½ (namespace alias) примСняСтся Π² качСствС ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ³ΠΎ синонима ΠΈΠΌΠ΅Π½ΠΈ пространства ΠΈΠΌΠ΅Π½. НапримСр, Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ имя пространства ΠΈΠΌΠ΅Π½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

namespace cplusplus_primer { /* ... */ };

Π•ΠΌΡƒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ синоним ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

namespace primer = cplusplus_primer;

ОбъявлСниС псСвдонима пространства ΠΈΠΌΠ΅Π½ начинаСтся с ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова namespace, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт имя псСвдонима пространства ΠΈΠΌΠ΅Π½ (ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅), сопровоТдаСмоС Π·Π½Π°ΠΊΠΎΠΌ =, ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ имя пространства ΠΈΠΌΠ΅Π½ ΠΈ Ρ‚ΠΎΡ‡ΠΊΠ° с запятой. Если имя ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ пространства ΠΈΠΌΠ΅Π½ Π΅Ρ‰Π΅ Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΊΠ°ΠΊ пространство ΠΈΠΌΠ΅Π½, ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ошибка.

ПсСвдоним пространства ΠΈΠΌΠ΅Π½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ ΠΊ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌΡƒ пространству ΠΈΠΌΠ΅Π½:

namespace Qlib = cplusplus_primer::QueryLib;

Qlib::Query q;

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ мноТСство синонимов ΠΈΠ»ΠΈ псСвдонимов. ВсС псСвдонимы ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ имя пространства ΠΈΠΌΠ΅Π½ Ρ€Π°Π²Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹ Π² ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ.

ОбъявлСния using (напоминаниС)

ИмСна, прСдставлСнныС Π² объявлСнии using, ΠΏΠΎΠ΄Ρ‡ΠΈΠ½ΡΡŽΡ‚ΡΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ области видимости. Имя Π²ΠΈΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ Ρ‚ΠΎΡ‡ΠΊΠΈ объявлСния using ΠΈ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° области видимости, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ΠΎ объявлСно. Бущности Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ области видимости ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½Ρ‹Π΅ сущности внСшнСй. ΠšΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π° ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΉ области видимости, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ΠΈ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² областях видимости, Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π² Π½Π΅Π΅. По Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ области видимости слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π°.

ОбъявлСниС using ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² глобальной ΠΈ локальной области видимости, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² области видимости пространства ΠΈΠΌΠ΅Π½ ΠΈΠ»ΠΈ класса. ОбъявлСниС using Π² области видимости класса ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ классС опрСдСляСмого класса (см. Ρ€Π°Π·Π΄Π΅Π» 15.5).

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

Подобно объявлСнию using, Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° using (using directive) позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ ΠΈΠΌΠ΅Π½. Однако, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ объявлСния using, здСсь Π½Π΅ сохраняСтся ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΈΠΌΠ΅Π½, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всС ΠΎΠ½ΠΈ Π²ΠΈΠ΄ΠΈΠΌΡ‹.

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

ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² using для Ρ‚Π°ΠΊΠΈΡ… пространств ΠΈΠΌΠ΅Π½, ΠΊΠ°ΠΊ std, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ всС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° ΠΈΠΌΠ΅Π½ΠΈ, присущиС использованию Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° using ΠΈ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости

ΠžΠ±Π»Π°ΡΡ‚ΡŒ видимости ΠΈΠΌΠ΅Π½, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ using, Π³ΠΎΡ€Π°Π·Π΄ΠΎ слоТнСС, Ρ‡Π΅ΠΌ Π² случаС объявлСния using. ОбъявлСниС using ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ имя нСпосрСдствСнно Π² Ρ‚Ρƒ ΠΆΠ΅ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находится само объявлСниС using. ОбъявлСниС using ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ псСвдониму для Ρ‡Π»Π΅Π½Π° пространства ΠΈΠΌΠ΅Π½.