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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΎΠ΅ руководство ΠΏΠΎ C++Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 14

Автор Π‘ΡŒΡΡ€Π½ Бтраустрап

enum color {red, yellow, green=20, blue};

color col = red;

color* cp =&col;

if (*cp == blue) //…

color Π·Π°Π΄Π°Π½ ΠΊΠ°ΠΊ цСлочислСнный Ρ‚ΠΈΠΏ, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ†Π²Π΅Ρ‚Π°, col описан ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ этого Ρ‚ΠΈΠΏΠ°, Π° cp ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ этого Ρ‚ΠΈΠΏΠ°. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌΠΈ значСниями ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚ΠΈΠΏΠ° color ΡΠ²Π»ΡΡŽΡ‚ΡΡ red, yellow, green, blue. Π­Ρ‚ΠΈ значСния ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ†Π΅Π»Ρ‹Π΅ значСния 0, 1, 20 ΠΈ 21. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ пСрСчислСниС - это ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Ρ‚ΠΈΠΏΠ° color ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ значСния Ρ‚ΠΈΠΏΠ° color, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,

color c = 1; // ошибка: нСсоотвСтствиС Ρ‚ΠΈΠΏΠΎΠ²

 // Π½Π΅Ρ‚ прСобразования ΠΎΡ‚ int Π² color

int i = yellow; // Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ: yellow прСобразуСтся Π² int со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 1

 // стандартноС цСлочислСнноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΊ Β§R.18.3.

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ пСрСчислСния, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² классС (Β§R.9), относятся ΠΊ области видимости этого класса, ΠΈ ΠΊ Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΈΠ·Π²Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ-Ρ‡Π»Π΅Π½ΠΎΠ² этого класса Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ явного уточнСния ΠΈΠΌΠ΅Π½Π΅ΠΌ класса (Β§R.5.1). Имя самого Ρ‚ΠΈΠΏΠ° пСрСчислСния локально Π² этом классС (Β§R.9.7), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,

class X {

public:

 enum direction {left='l', right='r'};

 int f(int i)

 { return i==left ? 0 : i==right ? 1 : 2; }

};


void g(X* p)

{

 direction d; // ошибка: `direction' Π²Π½Π΅

 int i; // области видимости

 i = p-β€Ίf(left); // ошибка: `left' Ρ‚ΠΎΠΆΠ΅ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌ

 i = p-β€Ίf(X::right); // Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ

 //…

}

R.7.3 Описания asm

ОписаниС asm ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄:

описаниС-asm:

 asm ( строка-Π»ΠΈΡ‚Π΅Ρ€Π°Π» );

НазначСниС описания asm опрСдСляСтся Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΡ‚ транслятора ΠΊ ассСмблСру.

R.7.4 Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ связи

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ спСцификации-связи ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ (Β§R.3.3) Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° C++ ΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ языкС:

спСцификация-связи:

 extern строка-Π»ΠΈΡ‚Π΅Ρ€Π°Π» { список-описаний opt }

 extern строка-Π»ΠΈΡ‚Π΅Ρ€Π°Π» описаниС

список-описаний:

 ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅

 ΡΠΏΠΈΡΠΎΠΊ-описаний описаниС

Π’Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ΅ связываниС задаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ строки-Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°. Π•Π΅ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ опрСдСляСтся Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. Но Π²ΠΎ всСх рСализациях Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ прСдусмотрСно связываниС с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π½Π° языкС C ("C") ΠΈ с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π½Π° языкС C++ ("C++"). По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ связываниС задаСтся ΠΊΠ°ΠΊ "C++", Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,

complex sqrt(complex); // ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ связываниС с C++

extern "C" {

 double sqrt(double); // связываниС с C

}

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ связи ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ. БпСцификация связи Π½Π΅ Π·Π°Π΄Π°Π΅Ρ‚ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости. БпСцификация-связи ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ области видимости (Β§R.3.2). БпСцификация-связи для класса относится ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ, описанным Π² Π½Π΅ΠΌ, ΠΈ функциям, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΌΡΡ Ρ‡Π»Π΅Π½Π°ΠΌΠΈ. БпСцификация-связи, относящаяся ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, относится ΠΈ ΠΊΠΎ всСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ ΠΈ функциям, описанным Π² Π½Π΅ΠΉ. ОписаниС связи, содСрТащСС Π½Π΅ΠΈΠ·Π²Π΅ΡΡ‚Π½ΡƒΡŽ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ строку, считаСтся ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹ΠΌ.

Если функция ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ спСцификации-связи, Ρ‚ΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ согласованы, Ρ‚.Π΅. Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ строку-Π»ΠΈΡ‚Π΅Ρ€Π°Π». ОписаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±Π΅Π· указания спСцификации-связи Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ ΡƒΠΊΠ°Π·Π°Π½ΠΈΡŽ спСцификации связи для этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Ѐункция ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ описана Π±Π΅Π· указания спСцификации связи Π΄Π°ΠΆΠ΅ послС явного указания спСцификации связи, Π½ΠΎ связываниС, явно Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ Π² Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½Π΅ΠΌ описании, Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ устранСно Ρ‚Π°ΠΊΠΈΠΌ описаниСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Из мноТСства ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (Β§R.13) с Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ связываниС с языком C, см. Β§R.7.4.

БвязываниС ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

extern "C" {

 //…

 _iobuf_iob[_NFILE];

 //…

 int _flsbuf(unsigned,_iobuf*);

 //…

}

Когда задаСтся спСцификация связи, Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ статичСскиС Π²Π½ΡƒΡ‚Ρ€ΠΈ { }. Для Ρ‚Π°ΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π° связывания игнорируСтся. Π˜Π½Π°Ρ‡Π΅, функция, описанная ΠΏΡ€ΠΈ Π·Π°Π΄Π°Π½ΠΈΠΈ связи, трактуСтся, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΎΠ½Π° Π±Ρ‹Π»Π° явно описана ΠΊΠ°ΠΊ extern, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½ΠΈΠΆΠ΅ Π²Ρ‚ΠΎΡ€ΠΎΠ΅ описаниС ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎ (Β§R.7.1.1):

extern "C" double f();

static double f(); // ошибка

ΠžΠ±ΡŠΠ΅ΠΊΡ‚, описанный Π²Π½ΡƒΡ‚Ρ€ΠΈ конструкции

extern "C" {/*… */}

всС ΠΆΠ΅ считаСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ, Π° Π½Π΅ просто описанным.

БвязываниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° C++ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… языках, Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ связываниС, зависит ΠΎΡ‚ языков ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’Π°ΠΊΠΎΠ΅ связываниС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, ΠΊΠΎΠ³Π΄Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ размСщСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² памяти ΡΠ²Π»ΡΡŽΡ‚ΡΡ достаточно схоТими для Π΄Π²ΡƒΡ… языков.

Если для задания связи Π² строкС-Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π΅ ΠΈΠ· спСцификации-связи ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ имя языка программирования, Ρ‚ΠΎ рСкомСндуСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ написаниС этого ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π»ΠΎΡΡŒ ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅Π³ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ язык, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ada (Π° Π½Π΅ ADA) ΠΈ Fortran (Π° Π½Π΅ FORTRAN).

R.8 ΠžΠΏΠΈΡΠ°Ρ‚Π΅Π»ΠΈ

Бписок-описатСлСй, Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π² описании, - это ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ описатСлСй, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€.

список-описаний:

 ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ-с-ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ

 ΡΠΏΠΈΡΠΎΠΊ-описаний , ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ-с-ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ

ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ-с-ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ:

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

ОписаниС состоит ΠΈΠ· Π΄Π²ΡƒΡ… частСй: спСцификации (спСцификация-описания; см. Β§R.7.1) ΠΈ описатСлСй (список-описатСлСй). Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π·Π°Π΄Π°ΡŽΡ‚ основной Ρ‚ΠΈΠΏ, класс памяти ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ свойства описываСмых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ΠžΠΏΠΈΡΠ°Ρ‚Π΅Π»ΠΈ Π·Π°Π΄Π°ΡŽΡ‚ имя этих ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π° Ρ‚Π°ΠΊΠΆΠ΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ Ρ‚ΠΈΠΏ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π°ΠΊΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΊΠ°ΠΊ * (ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π°) ΠΈ () (функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π°Ρ). Π’ описатСлС Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ значСния, инициализация обсуТдаСтся Π² Β§R.8.4 ΠΈ Β§R.12.6.

ΠžΠΏΠΈΡΠ°Ρ‚Π΅Π»ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚Π°ΠΊΠΎΠΉ синтаксис:

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

 ΠΈΠΌΡ-Π²-описатСлС

 ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ-ptr ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ

 ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ ( список-описаний-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ) список-спСцификаций-cv opt

 ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ [ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅-константа opt ]

 ( ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ )

опСрация-ptr:

 * список-спСцификаций-cv opt

 & список-спСцификаций-cv opt

 ΠΏΠΎΠ»Π½ΠΎΠ΅-имя-класса :: * список-спСцификаций-cv opt

список-спСцификаций-cv:

 const

 volatile

имя-Π²-описатСлС:

 ΠΈΠΌΡ

 ΠΈΠΌΡ-класса

 ~имя-класса

 ΠΈΠΌΡ-typedef

 ΡƒΡ‚ΠΎΡ‡Π½Π΅Π½Π½ΠΎΠ΅-имя-Ρ‚ΠΈΠΏΠ°

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ имя-класса ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ описании класса с этим ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΎΠ½Π° ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ ΡƒΡ‚ΠΎΡ‡Π½Π΅Π½ΠΈΠ΅ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ :: для Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ Π² области видимости (Β§R.12.1, Β§R.12.4).

R.8.1 ИмСна Ρ‚ΠΈΠΏΠΎΠ²

Имя Ρ‚ΠΈΠΏΠ° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Π·Π°Π΄Π°Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ явного прСобразования Ρ‚ΠΈΠΏΠ° ΠΈΠ»ΠΈ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π² опСрациях sizeof ΠΈΠ»ΠΈ new. Для этого слуТит конструкция имя-Ρ‚ΠΈΠΏΠ°, которая синтаксичСски эквивалСнтна описанию ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ этого Ρ‚ΠΈΠΏΠ°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ отсутствуСт имя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

имя-Ρ‚ΠΈΠΏΠ°:

 ΡΠΏΠΈΡΠΎΠΊ-спСцификаций-Ρ‚ΠΈΠΏΠ° абстрактный-ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ opt

список-спСцификаций-Ρ‚ΠΈΠΏΠ°:

 ΡΠΏΠ΅Ρ†ΠΈΡ„икация-Ρ‚ΠΈΠΏΠ° список-спСцификаций-Ρ‚ΠΈΠΏΠ°

абстрактный-ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ:

 ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ-ptr абстрактный-ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ opt

 Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ‚Π½Ρ‹ΠΉ-ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ opt ( список-описаний-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ) список-спСцификаций cv opt

 Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ‚Π½Ρ‹ΠΉ-ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ opt [ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅-константа opt ]

 ( абстрактный-ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ )

МоТно ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Π² ΠΊΠ°ΠΊΠΎΠΌ мСстС абстрактного-описатСля Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ конструкция стала описатСлСм, допустимым Π² описании. Π’ΠΎΠ³Π΄Π° ΠΏΠΎΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π΅ΠΌ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ Ρ‚ΠΈΠΏ гипотСтичСского ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°. НапримСр, описания

int // int i

int * // int *pi

int *[3] // int *p[3]

int (*)[3] // int (*p3i)[3]

int *() // int *f()

int (*)(double) // int (*pf)(double)

Π·Π°Π΄Π°ΡŽΡ‚ соотвСтствСнно Ρ‚Π°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹: "Ρ†Π΅Π»ΠΎΠ΅", "ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ†Π΅Π»ΠΎΠ΅", "массив ΠΈΠ· 3 ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° Ρ†Π΅Π»ΠΎΠ΅", "ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° массив ΠΈΠ· 3 Ρ†Π΅Π»Ρ‹Ρ…", "функция Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π°Ρ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ†Π΅Π»ΠΎΠ΅", "ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Ρ‚ΠΈΠΏΠ° double, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΡƒΡŽ Ρ†Π΅Π»ΠΎΠ΅".

R.8.1.1 УстранСниС нСоднозначности

ΠΠ΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ, отмСчСнная Π² Β§R.6.8, которая Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΈΠ·-Π·Π° сходства ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ стилС, ΠΈ описаниСм, ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Π² контСкстС описания. Π’ этом контСкстС ΠΎΠ½Π° проявляСтся ΠΊΠ°ΠΊ сходство ΠΌΠ΅ΠΆΠ΄Ρƒ описаниСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΅ΡΡ‚ΡŒ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ скобки Π²ΠΎΠΊΡ€ΡƒΠ³ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, ΠΈ описаниСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π² качСствС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ опСрация привСдСния, заданная Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ стилС. Как ΠΈ для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ устраняСтся ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ, согласно ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ слСдуСт ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ описаниСм Π»ΡŽΠ±ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ²Ρ‹ΠΌ. МоТно явно ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ Π² описании ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ привСдСния, Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π½Π΅ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ стилС, ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ = для обозначСния ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,