class circle: public shape {
int radius;
public:
void rotate(int) {}
void draw(); // Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π³Π΄Π΅-ΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π°
};
Π€ΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Ρ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΈΠ· ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΡΠΌΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΊΠΎΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΡΠΈΡΡΠΎΠΉ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°, Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½.
R.10.4 Π‘Π²ΠΎΠ΄ΠΊΠ° ΠΏΡΠ°Π²ΠΈΠ» ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²Π΅ΡΡΠΈ Π²ΠΎΠ΅Π΄ΠΈΠ½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° C++. ΠΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΡ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΈΠΌΠ΅Π½ (Π²ΠΊΠ»ΡΡΠ°Ρ ΠΈΠΌΡ-typedef (Β§R.7.1.3) ΠΈ ΠΈΠΌΡ-ΠΊΠ»Π°ΡΡΠ° (Β§R.9.1)) ΠΈ Π² Π»ΡΠ±ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡ ΠΏΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡ ΡΠ·ΡΠΊΠ°. ΠΠ΄Π΅ΡΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ Π½Π° Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΡΠΎΠ²Π½Π΅, Π²ΠΎΠΏΡΠΎΡΡ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΡΠΆΠ΄Π°ΡΡΡΡ Π² Β§R.3.3. ΠΠΎΠ½ΡΡΠΈΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π±ΡΠ»ΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΎ Π² Β§R.3.2.
ΠΡΡΠΊΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΡΠΌ (Π½Π΅ ΡΡΠΈΡΠ°Ρ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ) Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π΅Π³ΠΎ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ (Β§R.10.1.1). ΠΡΠ°Π²ΠΈΠ»Π° Π΄ΠΎΡΡΡΠΏΠ° (Β§R.11) Π½Π°ΡΠΈΠ½Π°ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΈΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π΅Π³ΠΎ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ. Π’ΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ ΠΏΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΈΠΌΠ΅Π½ΠΈ Π½Π΅ Π½Π°ΡΡΡΠ΅Π½Ρ, Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΈΠΏΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ.
ΠΠΌΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²Π½Π΅ Π»ΡΠ±ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΡΠ°, ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΡΠΎΡΡΠΌ ΡΡΠΎΠΈΡ ΡΠ½Π°ΡΠ½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ :: (ΠΈ ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ ΡΡΠΎΡΠ½ΡΠ΅ΡΡΡ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ :: ΠΈΠ»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ -βΊ ΠΈΠ»ΠΈ .), Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΈΠ»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΠΈΠ»ΠΈ ΡΠΈΠΏΠ°.
ΠΠΌΡ, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΠΎΠ΅ ΠΏΠΎΡΠ»Π΅ X:: ΠΈΠ»ΠΈ obj., Π³Π΄Π΅ obj ΡΠΈΠΏΠ° X ΠΈΠ»ΠΈ ΡΠΈΠΏΠ° ΡΡΡΠ»ΠΊΠ° Π½Π° X, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΡ, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΠΎΠ΅ ΠΏΠΎΡΠ»Π΅ ptr-βΊ, Π³Π΄Π΅ ptr ΡΠΈΠΏΠ° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° X, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠ»Π΅Π½Π° ΠΊΠ»Π°ΡΡΠ° X ΠΈΠ»ΠΈ ΡΠ»Π΅Π½ΠΎΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ X ΠΊΠ»Π°ΡΡΠ°. ΠΠΎΠΌΠΈΠΌΠΎ ΡΡΠΎΠ³ΠΎ, Π² ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ptr-βΊΠΈΠΌΡ ptr ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° Y, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ operator-βΊ(), ΠΎΠΏΠΈΡΠ°Π½Π½Π°Ρ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎ ptr-βΊoperator() Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΡΡΠ΅ΡΠ΅ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΌ Π½Π° X (Β§R.13.4.6).
ΠΠΌΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ ΡΡΠΎΡΠ½ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π²ΡΡΠ΅ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ², ΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π΅ ΡΠ²Π»ΡΡΡΠ΅ΠΉΡΡ ΡΠ»Π΅Π½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ°, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² ΡΠΎΠΌ Π±Π»ΠΎΠΊΠ΅, Π³Π΄Π΅ ΠΎΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, ΠΈΠ»ΠΈ Π² ΠΎΠ±ΡΠ΅ΠΌΠ»ΡΡΠ΅ΠΌ Π±Π»ΠΎΠΊΠ΅ ΠΈΠ»ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΌ. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΡΠΊΡΡΠ²Π°Π΅Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΈΠΌΠ΅Π½ΠΈ Π² ΠΎΠ±ΡΠ΅ΠΌΠ»ΡΡΠΈΡ Π±Π»ΠΎΠΊΠ°Ρ , Π° ΡΠ°ΠΊΠΆΠ΅ Π΅Π³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠ°ΠΊ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠ° ΠΈΠΌΠ΅Π½ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Π΄Π»Ρ ΠΈΠΌΠ΅Π½ Π² ΡΠ°Π·Π½ΡΡ ΠΎΠ±Π»Π°ΡΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ (Β§R.13.4).
ΠΠΌΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ ΡΡΠΎΡΠ½ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π²ΡΡΠ΅ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ², ΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ²Π»ΡΡΡΠ΅ΠΉΡΡ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ»Π΅Π½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° X, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΎ ΠΈΠ»ΠΈ Π² ΡΠΎΠΌ Π±Π»ΠΎΠΊΠ΅, Π³Π΄Π΅ ΠΎΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, ΠΈΠ»ΠΈ Π² ΠΎΠ±ΡΠ΅ΠΌΠ»ΡΡΠ΅ΠΌ Π±Π»ΠΎΠΊΠ΅, ΠΈ ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ»Π΅Π½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° X, ΠΈΠ»ΠΈ ΡΠ»Π΅Π½ΠΎΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ X ΠΊΠ»Π°ΡΡΠ°, ΠΈΠ»ΠΈ ΡΡΠΎ ΠΈΠΌΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΌ. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΈΠΌΠ΅Π½ ΡΠΊΡΡΠ²Π°Π΅Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠΈΡ ΠΆΠ΅ ΠΈΠΌΠ΅Π½ Π² ΠΎΠ±ΡΠ΅ΠΌΠ»ΡΡΠΈΡ Π±Π»ΠΎΠΊΠ°Ρ , Π² ΡΠ»Π΅Π½Π°Ρ ΠΊΠ»Π°ΡΡΠ° ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΡΡΠ΅Π΄ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΈΠΌΠ΅Π½. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ»Π΅Π½Π° ΡΠΊΡΡΠ²Π°Π΅Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Ρ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π² Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠ°Ρ ΠΈ ΡΡΠ΅Π΄ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΈΠΌΠ΅Π½.
ΠΠΌΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ ΡΡΠΎΡΠ½ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π²ΡΡΠ΅ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ², ΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Π΅ ΠΊΠ»Π°ΡΡΠ° X, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΎ ΠΈΠ»ΠΈ Π² ΡΠΎΠΌ Π±Π»ΠΎΠΊΠ΅, Π³Π΄Π΅ ΠΎΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, ΠΈΠ»ΠΈ Π² ΠΎΠ±ΡΠ΅ΠΌΠ»ΡΡΠ΅ΠΌ Π±Π»ΠΎΠΊΠ΅, ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ»Π΅Π½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° X, ΠΈΠ»ΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ X ΠΊΠ»Π°ΡΡΠ°, ΠΈΠ»ΠΈ ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ.
ΠΠΌΡ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ, Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΈ Π΅Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ (Β§R.8.3), ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡΠ΅ΠΉ Ρ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠΈΠΌ Π±Π»ΠΎΠΊΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ (Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ). ΠΠΌΡ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ, Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ Π² Π΅Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ (Β§R.8.2.5), Π° Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ, ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΡΠ΅Π·Π°Π΅Ρ ΡΡΠ°Π·Ρ ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ. Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠΉ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ (Β§R.3.2) ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ; Π² Π½ΠΈΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠ»ΠΈ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ»Π΅Π½Ρ ΠΊΠ»Π°ΡΡΠ°, ΠΈ ΠΎΠ½ΠΈ Π²ΡΡΠΈΡΠ»ΡΡΡΡΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ (Β§R.8.2.6).
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ-ctor (Β§R.12.6.2) Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠ΅Π³ΠΎ Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠ½ Π·Π°Π΄Π°Π½. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π² Π½Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½Π° ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ².
R.11 ΠΠΎΠ½ΡΡΠΎΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ»Π΅Π½Π°ΠΌ
Π§Π»Π΅Π½ ΠΊΠ»Π°ΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ:
β’ ΡΠ°ΡΡΠ½ΡΠΌ (private); ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Π΅Π³ΠΎ ΠΈΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΡΠ½ΠΊΡΠΈΡΡ -ΡΠ»Π΅Π½Π°Ρ ΠΈ Π΄ΡΡΠ·ΡΡΡ ΠΊΠ»Π°ΡΡΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ ΠΎΠΏΠΈΡΠ°Π½;
β’ Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΠΌ (protected); ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Π΅Π³ΠΎ ΠΈΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΡΠ½ΠΊΡΠΈΡΡ -ΡΠ»Π΅Π½Π°Ρ ΠΈ Π΄ΡΡΠ·ΡΡΡ ΠΊΠ»Π°ΡΡΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ ΠΎΠΏΠΈΡΠ°Π½, Π° ΡΠ°ΠΊΠΆΠ΅ Π² ΡΡΠ½ΠΊΡΠΈΡΡ -ΡΠ»Π΅Π½Π°Ρ ΠΈ Π΄ΡΡΠ·ΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠ²Π»ΡΡΡΠΈΡ ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠΌΠΈ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΡΡΠΎΠΌΡ ΠΊΠ»Π°ΡΡΡ (ΡΠΌ. Β§R.11.5);
β’ ΠΎΠ±ΡΠΈΠΌ (public); ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Π΅Π³ΠΎ ΠΈΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² Π»ΡΠ±ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
Π§Π»Π΅Π½Ρ ΠΊΠ»Π°ΡΡΠ°, ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ ΡΠΎ ΡΠ»ΡΠΆΠ΅Π±Π½ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ class, ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΠ½ΡΠΌΠΈ ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ. Π§Π»Π΅Π½Ρ ΠΊΠ»Π°ΡΡΠ°, ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ ΡΠΎ ΡΠ»ΡΠΆΠ΅Π±Π½ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ struct ΠΈΠ»ΠΈ union, ΡΠ²Π»ΡΡΡΡΡ ΠΎΠ±ΡΠΈΠΌΠΈ ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
class X {
int; // X:: ΡΠ°ΡΡΠ½ΡΠΉ ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ
};
struct S {
int a; // S::a ΠΎΠ±ΡΠΈΠΉ ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ
};
R.11.1 Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π΄ΠΎΡΡΡΠΏΠ°
ΠΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ»Π΅Π½ΠΎΠ² ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ½Π°Π±ΠΆΠ΅Π½Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ Π΄ΠΎΡΡΡΠΏΠ° (Β§R.10):
ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ-Π΄ΠΎΡΡΡΠΏΠ°: ΡΠΏΠΈΡΠΎΠΊ-ΡΠ»Π΅Π½ΠΎΠ² opt
Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ-Π΄ΠΎΡΡΡΠΏΠ° Π·Π°Π΄Π°Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»Π° Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ»Π΅Π½Π°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΡΡΡ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ° ΠΆΠΈΠ·Π½ΠΈ ΠΊΠ»Π°ΡΡΠ° ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΡΠ²ΠΈΡΡΡ Π΄ΡΡΠ³Π°Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ-Π΄ΠΎΡΡΡΠΏΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
class X {
int a; // X::a ΡΠ°ΡΡΠ½ΡΠΉ ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ: ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ 'class'
public:
int b; // X::b ΠΎΠ±ΡΠΈΠΉ
int c; // X::c ΠΎΠ±ΡΠΈΠΉ
};
ΠΠΎΠΏΡΡΡΠΈΠΌΠΎ Π»ΡΠ±ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ Π΄ΠΎΡΡΡΠΏΠ° ΠΈ Π·Π°Π΄Π°Π²Π°ΡΡ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π² Π»ΡΠ±ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
struct S {
int a; // S::a ΠΎΠ±ΡΠΈΠΉ ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ: ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ `struct'
protected:
int b; // S::b Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΠΉ
private:
int c; // S::c ΡΠ°ΡΡΠ½ΡΠΉ
public:
int d; // S:: d ΠΎΠ±ΡΠΈΠΉ
};
ΠΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ»Π΅Π½ΠΎΠ², ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΡ Π΄Π°Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ-Π΄ΠΎΡΡΡΠΏΠ°, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ (Β§R.9.2).
R.11.2 Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π΄ΠΎΡΡΡΠΏΠ° Π΄Π»Ρ Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ²
ΠΡΠ»ΠΈ ΠΊΠ»Π°ΡΡ ΠΎΠΏΠΈΡΠ°Π½ ΠΊΠ°ΠΊ Π±Π°Π·ΠΎΠ²ΡΠΉ (Β§R.10) ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ Π΄ΡΡΠ³ΠΎΠΌΡ ΠΊΠ»Π°ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π΄ΠΎΡΡΡΠΏΠ° public, ΡΠΎ ΡΠ»Π΅Π½Ρ ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ public ΠΈΠ»ΠΈ protected ΠΈΠ· Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΡΠ²Π»ΡΡΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ»Π΅Π½Π°ΠΌΠΈ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ Π΄Π»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΡΠ»ΠΈ ΠΊΠ»Π°ΡΡ ΠΎΠΏΠΈΡΠ°Π½ ΠΊΠ°ΠΊ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ Π΄ΡΡΠ³ΠΎΠΌΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π΄ΠΎΡΡΡΠΏΠ° private, ΡΠΎ ΡΠ»Π΅Π½Ρ ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ public ΠΈΠ»ΠΈ protected ΠΈΠ· Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΡΠ²Π»ΡΡΡΡΡ ΡΠ»Π΅Π½Π°ΠΌΠΈ ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ private Π΄Π»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. Π§Π°ΡΡΠ½ΡΠ΅ ΡΠ»Π΅Π½Ρ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΎΡΡΠ°ΡΡΡΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ Π΄Π°ΠΆΠ΅ Π΄Π»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ², Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΏΡΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π½Π΅ Π±ΡΠ»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ friend.
ΠΡΠ»ΠΈ Π΄Π»Ρ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π½Π΅ ΡΠΊΠ°Π·Π°Π½Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ-Π΄ΠΎΡΡΡΠΏΠ°, ΡΠΎ Π΄Π»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, Π΅ΡΠ»ΠΈ ΠΎΠ½ ΠΎΠΏΠΈΡΠ°Π½ ΠΊΠ°ΠΊ struct, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ public, Π° Π΅ΡΠ»ΠΈ ΠΎΠ½ ΠΎΠΏΠΈΡΠ°Π½ ΡΠΎ ΡΠ»ΡΠΆΠ΅Π±Π½ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ class, ΡΠΎ - ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ private, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
class B {/*β¦ */};
class D1: private B {/*β¦ */};
class D2: public B {/*β¦ */};
class D3: B {/*β¦ */}; // `B' ΡΠ°ΡΡΠ½ΡΠΉ ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ
struct D4: public B {/*β¦ */};
struct D5: private B {/*β¦ */};
struct D6: B {/*β¦ */}; // `B' ΡΠ°ΡΡΠ½ΡΠΉ ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ
ΠΠ΄Π΅ΡΡ ΠΊΠ»Π°ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠΈΠΌ (public) Π±Π°Π·ΠΎΠ²ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ Π΄Π»Ρ D2, D4 ΠΈ D6 ΠΈ ΡΠ°ΡΡΠ½ΡΠΌ (private) Π±Π°Π·ΠΎΠ²ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ Π΄Π»Ρ D1, D2 ΠΈ D5.
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΊΠ°ΠΊ private Π½Π΅ Π²Π»ΠΈΡΠ΅Ρ Π½Π° Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ»Π΅Π½Π°ΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΡΠ»Π΅Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΠ»ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡ, ΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΡΡΡ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ.
Π ΡΡΠ½ΠΊΡΠΈΡΡ -ΡΠ»Π΅Π½Π°Ρ ΠΈΠ»ΠΈ Π΄ΡΡΠ·ΡΡΡ ΠΊΠ»Π°ΡΡΠ° X ΠΌΠΎΠΆΠ½ΠΎ X* Π½Π΅ΡΠ²Π½ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡ Π² ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ°ΡΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ, ΡΠ²Π»ΡΡΡΠΈΠΉΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π±Π°Π·ΠΎΠ²ΡΠΌ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ X.
R.11.3 ΠΠΏΠΈΡΠ°Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ°
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΎΡΠ½Π΅Π½Π½ΠΎΠ΅ ΠΈΠΌΡ, ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ»Π΅Π½Ρ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π² ΡΠ°ΡΡΠΈ public ΠΈΠ»ΠΈ protected ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΡΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ Π΄ΠΎΡΡΡΠΏΠ°.
ΠΡΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡΠΈΠΌΠ΅Ρ:
class B {
int a;
public:
int b, c;
int bf();
};
class D: private B {
int d;
public:
B::c; // adjust access to `B::c'
int e;
int df();
};
int ef(D&);
ΠΠΎ Π²Π½Π΅ΡΠ½Π΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ef ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠΌΠ΅Π½Π° c, e, ΠΈ df. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠ½ΠΊΡΠΈΡ df ΡΠ»Π΅Π½ ΠΊΠ»Π°ΡΡΠ° D, Π² Π½Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½Π° b, c, bf, d, e ΠΈ df, Π½ΠΎ Π½Π΅ a. Π€ΡΠ½ΠΊΡΠΈΡ bf - ΡΠ»Π΅Π½ ΠΊΠ»Π°ΡΡΠ° B ΠΈ Π² Π½Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π½Ρ a, b, c ΠΈ bf.
ΠΠΏΠΈΡΠ°Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° Π½Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ»Π΅Π½Ρ, Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΌΡ Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅, ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ Π½Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ»Π΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
class B {
public:
int a;
private:
int b;