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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«C++Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 52

Автор ΠœΡŽΡ€Ρ€Π΅ΠΉ Π₯ΠΈΠ»Π»

f (a,(t=3,t+2),c)

ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Ρ€ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… являСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 5.

7.16 ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Π΅ ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½ΠΎ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, описано Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π»ΠΈ Π² качСствС ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ классов (см. #8.5.11). Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠ½ΠΎ. НСвозмоТно ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ смысл ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΈΡ… ΠΊ нСклассовым ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ. ΠŸΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ смысл ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ = ΠΈ amp; (ΡƒΠ½Π°Ρ€Π½ΠΎΠΉ) ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΈΡ… ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ классов ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π΅Π½.

Π­ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, примСняСмых ΠΊ основным Ρ‚ΠΈΠΏΠ°ΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ++a эквивалСнтно a+=1), Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ выполняСтся для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, примСняСмых ΠΊ классовым Ρ‚ΠΈΠΏΠ°ΠΌ. НСкоторыС ΠΎΠΏΠ΅Ρ€Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, присваиваниС, Π² случаС примСнСния ΠΊ основным Ρ‚ΠΈΠΏΠ°ΠΌ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ Π±Ρ‹Π» lvalue; это Π½Π΅ трСбуСтся для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, описанных для классовых Ρ‚ΠΈΠΏΠΎΠ².

7.16.1 Π£Π½Π°Ρ€Π½Ρ‹Π΅ ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

Унарная опСрация, прСфиксная ΠΈΠ»ΠΈ постфиксная, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‡Π»Π΅Π½Π° (см. #8.5.4), Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‰Π΅ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄Ρ€ΡƒΠ³Π° (см. #8.5.10), ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‰Π΅ΠΉ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, Π½ΠΎ Π½Π΅ двумя способами ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Π’Π°ΠΊ, для любой ΡƒΠ½Π°Ρ€Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ @, [email protected] ΠΈ @x ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ x.опСрация@() ΠΈΠ»ΠΈ опСрация@(x). ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ++ ΠΈ – Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚ΡŒ прСфиксноС ΠΈ постфикноС использованиС.

7.16.2 Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

Бинарная опСрация ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‡Π»Π΅Π½Π° (см. #8.5.4), ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‰Π΅ΠΉ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄Ρ€ΡƒΠ³Π° (см. #8.5.9), ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‰Π΅ΠΉ Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, Π½ΠΎ Π½Π΅ двумя способами ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Π’Π°ΠΊ, для любой Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ @, [email protected] ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ ΠΊΠ°ΠΊ x.operator @(y) ΠΈΠ»ΠΈ [email protected](x,y).

7.16.3 ΠžΡΠΎΠ±Ρ‹Π΅ ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ΅_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ( список_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ opt )

ΠΈ индСксированиС

ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ΅_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ [ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ]

ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌΠΈ опСрациями. ИмСнами ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ соотвСтсвСнно operator() ΠΈ operator[]. ΠžΠ±Ρ€Ρ‰Π΅Π½ΠΈΠ΅ x(arg) интСрпрСтируСтся ΠΊΠ°ΠΊ x.operator()(arg) для класового ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° x. Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ x[y] интСрпрСтируСтся ΠΊΠ°ΠΊ x. operator[](y).

8. Описания

Описания ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для опрСдСлСния ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ, Π΄Π²Π°Π΅ΠΌΠΎΠΉ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ. Они Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΡƒΡŽΡ‚ ΠΏΠ°ΠΌΡΡ‚ΡŒ, ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ. Описания ΠΈΠΌΠ΅ΡŽΡ‚ Π²ΠΈΠ΄:

описаниС: спСцификаторы_описания opt список_описатСлСй opt ; описаниС_ΠΈΠΌΠ΅Π½ΠΈ asm_описаниС

ΠžΠΏΠΈΡΠ°Ρ‚Π΅Π»ΠΈ Π² спискС_описатСлСй содСрТат ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ описанию. Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹_описания ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡƒΡ‰Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² опрСдСлСниях Π²Π½Π΅ΡˆΠ½ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (#10) ΠΈΠ»ΠΈ Π² описанях Π²Π½Π΅ΡˆΠ½ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Бписок описатСлСй ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ пустым Ρ‚ΠΎΠ»ΠΊΠΎ ΠΏΡ€ΠΈ описании класса (#8.5) ΠΈΠ»ΠΈ пСрСчислСния (#8.10), Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° спСцификаторы_описания – это class_спСцификатор ΠΈΠ»ΠΈ enum_спСцификатор. Описания ΠΈΠΌΠ΅Π½ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² #8.8; опсания asm описаны Π² #8.11.

спСцификатор_описания: спСцификатор_класса_памяти спСцификатор_Ρ‚ΠΈΠΏΠ° спСцификатор_Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ friend typedef

спСцификаторы_описания: спСцификатор_описания спСцификатор_описания opt

Бписок Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ Π½Π΅ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ² Π² описывамом Π½ΠΈΠΆΠ΅ смыслС.

8.1 Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Класса ΠŸΠ°ΠΌΡΡ‚ΠΈ

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ – это:

спСцификатор_класса_памяти: auto static extern register

Описания, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ спСцификаторы auto, static ΠΈ register Ρ‚Π°ΠΊΠΆΠ΅ слуТат опрСдСлСниями Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ€Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ объСма памяти. Если описаниС extern Π½Π΅ являСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ (#4.2), Ρ‚ΠΎ Π³Π΄Π΅-Ρ‚ΠΎ Π΅Ρ‰Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ для Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ².

ОписаниС register Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ описаниС auto (автоматичСский) с подсказкой компилятору, Ρ‡Ρ‚ΠΎ описанныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ усилСнно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ. Подсказка ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π°. К Π½ΠΈΠΌ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ опСрация получСния арСса amp;.

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ auto ΠΈΠ»ΠΈ register ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΠΈΠΌΠ΅Π½Π°ΠΌ, описанным Π² Π±Π»ΠΎΠΊΠ΅, ΠΈΠ»ΠΈ ΠΊ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ. Π’Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ описаний Π½ΠΈ статичСских Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π½ΠΈ статичСских Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

Π’ описании ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½ максимум ΠΎΠ΄ΠΈΠ½ sc_спСцификтор. Если Π² описании отсутсвуСт спСцификатор_класса_памяти, Ρ‚ΠΎ класс памяти принимаСтся автоматичСским Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ статичСским Π²Π½Π΅. Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅: Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ автоматчСскими.

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ static ΠΈ extern ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΠΊΠΎ для ΠΈΠΌΠ΅Π½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

НСкоторыС спСцификаторы ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² описаниях Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ:

спСцификатор_Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: overload inline virtual

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ overload Π΄Π΅Π»Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ ипользованиС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ для обозначСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, см. #8.9.

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ inline являСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ подсказкой ΠΊΠΎΠΌΠΏΠΈΠ»Ρ‚ΠΎΡ€Ρƒ, Π½Π΅ влияСт Π½Π° смысл ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€Π²Π°Π½. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ inline-подстановка Ρ‚Π΅Π»Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†Ρ†ΠΈ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Ѐункция (#8.5.2 ΠΈ #8.5.10), опрСдСлСнная Π²Π½ΡƒΡ‚Ρ€ΠΈ описания класса, являСтся inline ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ virtual ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² опсаниях Ρ‡Π»Π΅Π½ΠΎΠ² класса, см. #8.5.4.

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ friend ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ» сорытия ΠΈΠΌΠ΅Π½ΠΈ для Ρ‡Π»Π΅Π½ΠΎΠ² класса ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ описаний классов, см. #8.5.9.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ спСцификатора typedef вводится имя для Ρ‚ΠΈΠΏΠ°, см. #8.8.

8.2 Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π’ΠΈΠΏΠ°

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ Ρ‚ΠΈΠΏΠΎΠ² (спСцификатор_Ρ‚ΠΈΠΏΠ°) ΡΠ²Π»ΡΡŽΡ‚ΡΡ:

спСцификатор_Ρ‚ΠΈΠΏΠ°:

простоС_имя_Ρ‚ΠΈΠΏΠ° спСцификатор_класса enum-спСцификатор слоТный_спСцификатор_Ρ‚ΠΈΠΏΠ° const

Π‘Π»ΠΎΠ²ΠΎ const ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ допустимому спСцфикатору_Ρ‚ΠΈΠΏΠ°. Π’ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… случаях Π² описании ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄Π°Π½ΠΎ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ спСцификатора_Ρ‚ΠΈΠΏΠ°. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° const Π½Π΅ яляСтся lvalue. Если Π² описании ΠΎΠΏΡƒΡ‰Π΅Π½ спСцификатор Ρ‚ΠΈΠΏΠ°, ΠΎΠ½ принимаСтся int.

простоС_имя_Ρ‚ΠΈΠΏΠ°: char short int long unsigned float double const void

Π‘Π»ΠΎΠ²Π° long, short ΠΈ unsigned ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅. Они ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΊ Ρ‚ΠΈΠΏΡƒ int; unsigned ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΊ Ρ‚ΠΈΠΏΠ°ΠΌ char, short ΠΈ long.

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ класса ΠΈ пСрСчислСния ΠΎΠ±ΡΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π² #8.5 ΠΈ #8.10 соотвСтствСнно.

слоТный_спСцификатор_Ρ‚ΠΈΠΏΠ°: ΠΊΠ»ΡŽΡ‡ typedef-имя ΠΊΠ»ΡŽΡ‡ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€

ΠΊΠ»ΡŽΡ‡: class struct union enum

Π‘Π»ΠΎΠΆΠ½Ρ‹ΠΉ спСцификатор Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ссылки Π½Π° имя класса ΠΈΠ»ΠΈ пСрСчислСния Ρ‚Π°ΠΌ, Π³Π΄Π΅ имя ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ скрыто Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ. НапримСр:

class x (* ... *);

void f(int x) (* class x a; // ... *)

Если имя класса ΠΈΠ»ΠΈ пСрСчислСния Ρ€Π°Π½Π΅Π΅ описано Π½Π΅ Π±Ρ‹Π»ΠΎ, слоТный_спСцификатор_Ρ‚ΠΈΠΏΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ описаниС_ΠΈΠΌΠ΅Π½ΠΈ, см. #8.8.

8.3 ΠžΠΏΠΈΡΠ°Ρ‚Π΅Π»ΠΈ

Бписок_описатСлСй, ΠΏΠΎΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ Π² описании, Π΅ΡΡ‚ΡŒ раздлСнная запятыми ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ описатСлСй, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€.

список_описатСлСй: ΠΈΠ½ΠΈΡ†_ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ ΠΈΠ½ΠΈΡ†_ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ , список_описатСлСй

ΠΈΠ½ΠΈΡ†_ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ:

ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ opt

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹ ΠΎΠ±ΡΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π² #8.6. Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π² описнии ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ ΠΈ класс памяти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ относятся описатСли. ΠžΠΏΠΈΡΠ°Ρ‚Π΅Π»ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ синтаксис:

ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ: ΠΎΠΏ_имя ( ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ ) * const opt ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ amp; const opt ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ ( список_описаний_ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ) ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ [ константноС_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ opt ]

ΠΎΠΏ-имя: простоС_ΠΎΠΏ_имя typedef-имя :: простоС_ΠΎΠΏ_имя

простоС_ΠΎΠΏ_имя: ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ typedef-имя ~ typedef-имя имя_Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ_ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ имя_Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ_прСобразования

Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° Ρ‚Π° ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ Π² выраТСниях.

8.4 Бмысл описатСлСй

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ считаСтся ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ссли Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ конструкция, ΠΈΠΌΠ΅ΡŽΡ‰Π°ΡΡ Ρ‚Ρƒ ΠΆΠ΅ Ρ„ΠΎΡ€ΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΈ ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ, Ρ‚ΠΎ ΠΎΠ½Π° Π΄Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΈ класса ΠΏΠ°ΠΌΡ‚ΠΈ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ содСрТит Ρ€ΠΎΠ²Π½ΠΎ ΠΎΠ΄Π½ΠΎ ΠΎΠΏ_имя; ΠΎΠ½ΠΎ опрСдляСт описываСмый ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€. Π—Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ описаний Π½Π΅ΠΊΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (см. #8.5.2) , ΠΎΠΏ_имя Π±ΡƒΠ΄Π΅Ρ‚ простым ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ.

Если Π² качСствС описатСля Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ снабТСнный ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, Ρ‚ΠΎ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ спСцификатором, Π²ΠΎΠ·Π³Π»Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌ описаниС.

ΠžΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ Π² скобках эквивалСнтСн ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŽ Π±Π΅Π· скобок, Π½ΠΎ связку слоТных описатСлСй скобки ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ прСдставим сСбС описаниС

T D1

Π³Π΄Π΅ T – спСцификатор Ρ‚ΠΈΠΏΠ° (ΠΊΠ°ΠΊ int ΠΈ Ρ‚.Π΄.), Π° D1 – ΠΎΠΏΡΠ°Ρ‚Π΅Π»ΡŒ. Допустим, Ρ‡Ρ‚ΠΎ это описаниС заставляСт ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΈΠΏ Β«... TΒ», Π³Π΄Π΅ Β«...Β» пусто, Ссли ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ D1 Π΅ΡΡ‚ΡŒ просто ΠΎΠ±Ρ‹Ρ‡Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ (Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ x Π² Β«int xΒ» Π΅ΡΡ‚ΡŒ просто int). Π’ΠΎΠ³Π΄Π°, Ссли D1 ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄

*D

Ρ‚ΠΎ Ρ‚ΠΈΠΏ содСрТащСгося ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π΅ΡΡ‚ΡŒ Β«...ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° T.Β»

Если D1 ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄

* const D

Ρ‚ΠΎ Ρ‚ΠΈΠΏ содСрТащСгося ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π΅ΡΡ‚ΡŒ Β«... констанный ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° TΒ», Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ°, Ρ‡Ρ‚ΠΎ ΠΈ *D, Π½ΠΎ Π½Π΅ lvalue.

Если D1 ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄

amp;D

ΠΈΠ»ΠΈ

amp; const D

Ρ‚ΠΎ Ρ‚ΠΈΠΏ содСрТащСгося ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π΅ΡΡ‚ΡŒ Β«... ссылка Π½Π° T.Β» ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ссылка ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ lvalue, ипользованиС const излишнС. НСвозмоТно ΠΈΠΌΠ΅Ρ‚ΡŒ ссылку Π½Π° void (void amp;).

Если D1 ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄

D (список_описаний_ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²)

Ρ‚ΠΎ содСрТащийся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ Β«... функция, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π°Ρ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ‚ΠΈΠΏΠ° список_описаний_ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ Π²ΠΎΠ·Ρ€Π°Ρ‰Π°ΡŽΡ‰Π°Ρ T.Β»

список_описаний_ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²: список_описаний_ΠΏΠ°Ρ€Π°ΠΌ opt ... opt

список_описаний_ΠΏΠ°Ρ€Π°ΠΌ: список_описаний_ΠΏΠ°Ρ€Π°ΠΌ , описаниС_ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° описаниС_ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°

описаниС_ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°: спСцификаторы_описания ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ спСцификаторы_описания ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ = Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ спСцификаторы_описания абстракт_ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ спСцификаторы_описания абстракт_ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ = Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅