ΠΡΠΈΠΌΠ΅Ρ 2. ΠΡΠΎΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠ»ΠΈ Π°Π²ΡΠΎΡ X ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΡ X, ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½, ΡΡΠΎ ΠΈ X. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΉ ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΡ X, Π±ΡΠ΄Π΅Ρ Π½Π΅ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΡΠΈΠΌΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ Π±Π΅Π· ΡΠ²Π½ΠΎΠΉ ΠΊΠ²Π°Π»ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈΡ ΠΈΠΌΠ΅Π½ ΠΈΠ»ΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ using.
Π‘ΡΡΠ»ΠΊΠΈ[Stroustrup00] Β§8.2, Β§10.3.2, Β§11.2.4 β’ [Sutter00] Β§31-34
58. Π₯ΡΠ°Π½ΠΈΡΠ΅ ΡΠΈΠΏΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΡΠ°Π·Π½ΡΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°Ρ ΠΈΠΌΠ΅Π½, Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π΄Π»Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ
ΠΠ±Π΅ΡΠ΅Π³Π°ΠΉΡΠ΅ Π²Π°ΡΠΈ ΡΠΈΠΏΡ ΠΎΡ Π½Π΅ΠΏΡΠ΅Π΄Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ°, Π·Π°Π²ΠΈΡΡΡΠ΅Π³ΠΎ ΠΎΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² (argument-dependent lookup β ADL, ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΏΠΎΠΈΡΠΊ ΠΡΠ½ΠΈΠ³Π°); ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠ΅Π΄Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΡΠΉ ΠΏΠΎΠΈΡΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π²Π΅ΡΡΠ°ΡΡΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ. ΠΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΠΏΡΡΠ΅ΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² Π² ΡΠ²ΠΎΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°Ρ ΠΈΠΌΠ΅Π½ (Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ²ΡΠ·Π°Π½Π½ΡΠΌΠΈ Ρ Π½ΠΈΠΌΠΈ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ; ΡΠΌ. ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ 57). ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² Π² ΡΠ΅ ΠΆΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½, ΡΡΠΎ ΠΈ ΡΠ°Π±Π»ΠΎΠ½Ρ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ²).
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅Π‘Π»Π΅Π΄ΡΡ Π΄Π°Π½Π½ΠΎΠΌΡ ΡΠΎΠ²Π΅ΡΡ, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΡΡΠ΄Π½ΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π² Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ Ρ ΠΎΡΠ΅Π½Ρ ΡΠΎΠ½ΠΊΠΈΠΌΠΈ ΠΌΠΎΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΡΠ·ΡΠΊΠ°, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π²Ρ ΠΏΡΠΎΡΡΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ.
ΠΠΎΡ ΡΠ΅Π°Π»ΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Π² Π³ΡΡΠΏΠΏΠ΅ Π½ΠΎΠ²ΠΎΡΡΠ΅ΠΉ:
#include <vector>
namespace N {
struct X { };
template<typename T>
int* operator+(T , unsigned) {/* Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ */}
}
int main() {
std::vector<N::X> v(5);
v[0];
}
ΠΠ½ΡΡΡΡΠΊΡΠΈΡ v[0]; ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π½ΠΎ Π½Π΅ Π²ΠΎ Π²ΡΠ΅Ρ . ΠΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΊΡΠ°ΡΠΊΠΎ ΠΏΠ΅ΡΠ΅ΡΠΊΠ°Π·Π°ΡΡ ΡΡΡ Π΄Π»ΠΈΠ½Π½ΡΡ ΠΈΡΡΠΎΡΠΈΡ. ΠΡΠ΅Π½Ρ ΡΠΎΠ½ΠΊΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ²ΡΠ·Π°Π½Π° Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Π²Π½ΡΡΡΠΈ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ vector<T>::operator[] ΡΠΏΡΡΡΠ°Π½ ΠΊΠΎΠ΄ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ v.begin()+n, ΠΈ ΠΏΠΎΠΈΡΠΊ ΠΈΠΌΠ΅Π½ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΈ operator+ ΠΌΠΎΠΆΠ΅Ρ Π΄ΠΎΡΡΠΈΡΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ (Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ N) ΡΠΈΠΏΠ°, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½ Π²Π΅ΠΊΡΠΎΡ (Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ X). ΠΠΎΡΡΠΈΠ³Π½Π΅Ρ Π»ΠΈ ΠΏΠΎΠΈΡΠΊ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ ΠΈΠ»ΠΈ Π½Π΅Ρ β Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ vector<T>::iterator Π² Π΄Π°Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΠ»ΠΈ ΠΏΠΎΠΈΡΠΊ Π΄ΠΎΡΡΠΈΠ³Π°Π΅Ρ N, ΡΠΎ Π·Π΄Π΅ΡΡ ΠΎΠ½ Π½Π°Ρ ΠΎΠ΄ΠΈΡ N::operator+. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠΈΠΏΠΎΠ², ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΡΡΠΈΡΠ°ΡΡ, ΡΡΠΎ Π΄Π»Ρ vector<T>::iterator ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ N::operator+ ΠΈΠΌΠ΅Π΅Ρ Π»ΡΡΡΠ΅Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅, ΡΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ std::operator+ ΠΈΠ· ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ (ΠΊΠΎΡΠΎΡΡΠΉ ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΠ» Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½). (ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΠ°ΠΊΠΎΠΉ Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎΡΡΠΈ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ β Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ v.begin()+n ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ Π²Π½ΠΎΡΠΈΡ Π½Π΅ΠΏΡΠ΅Π΄Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΡΡ ΡΠΎΡΠΊΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ: Π»ΠΈΠ±ΠΎ Π½Π°Π΄ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ΄ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΡΠΈΠΏ v.begin() Π½ΠΈΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π½Π΅ Π·Π°Π²ΠΈΡΠ΅Π» ΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΠ°Π±Π»ΠΎΠ½Π°, Π»ΠΈΠ±ΠΎ Π²ΡΠ·ΠΎΠ² operator+ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΊΠ²Π°Π»ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ. Π‘ΠΌ. ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ 65.)
ΠΠΎΡΠΎΡΠΊΠΎ Π³ΠΎΠ²ΠΎΡΡ, Π²ΡΡΠ΄ Π»ΠΈ Π²Π°ΠΌ ΡΠ΄Π°ΡΡΡΡ Π²ΡΡΠ²ΠΈΡΡ ΠΈΡΡΠΈΠ½Π½ΡΡ ΠΏΡΠΈΡΠΈΠ½Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅. ΠΡΠ»ΠΈ Π²Π°ΠΌ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΏΠΎΠ²Π΅Π·Π΅Ρ ΠΈ Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π² ΡΠ»ΡΡΠ°Π΅ Π½Π΅Π²Π΅Π·Π΅Π½ΠΈΡ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ N::operator+ ΠΎΠΊΠ°ΠΆΠ΅ΡΡΡ, ΠΊ Π½Π΅ΡΡΠ°ΡΡΡΡ, Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΌ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ, Π½ΠΎ Π²ΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π΅Π΅ ΡΠ°Π±ΠΎΡΡ ΠΌΠΎΠ³ΡΡ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΠΌΠΈ...
ΠΡ Π΄ΡΠΌΠ°Π΅ΡΠ΅, ΡΡΠΎ Π²Π°ΠΌ Π½Π΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ Ρ ΡΡΠΈΠΌ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ? ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΡ, Π±ΡΠ²Π°Π»ΠΎ Π»ΠΈ ΡΠ°ΠΊΠΎΠ΅ Π² Π²Π°ΡΠ΅ΠΉ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅, ΡΡΠΎ Π²Π°Ρ ΠΊΠΎΠ΄, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ» ΠΊ ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΠΈ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ? Π ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²Ρ ΡΠ»Π΅Π³ΠΊΠ° ΠΌΠ΅Π½ΡΠ»ΠΈ Π²Π°Ρ ΠΊΠΎΠ΄, ΠΏΠΎΡΠΎΠΉ ΠΏΡΠΎΡΡΠΎ ΠΌΠ΅Π½ΡΡ ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΊΡΡΠΊΠΈ ΠΊΠΎΠ΄Π°, Π²ΡΠ΅ Π²Π΄ΡΡΠ³ Π½Π°ΡΠΈΠ½Π°Π»ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ Ρ Π²Π°Ρ ΠΎΡΡΠ°Π²Π°Π»ΠΎΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ Π½Π΅Π΄ΠΎΡΠΌΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρ Π³Π»ΡΠΏΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΏΡΡΠ°Π»ΡΡ Π² ΡΡΠ΅Ρ ΡΡΡΠΎΠΊΠ°Ρ ? ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΅ ΠΌΡ ΠΏΠΎΠΏΠ°Π΄Π°Π»ΠΈ Π² ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎΡΡΠ΅ΠΉ ΡΡΠ°Π½ΠΎΠ²ΠΈΠ»Π°ΡΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Ρ.Π΅. ΠΊΠΎΠ³Π΄Π° ADL Π½Π°Ρ ΠΎΠ΄ΠΈΠ» ΠΈΠΌΠ΅Π½Π° ΠΈΠ· Π½Π΅ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΡΠΈΠΏΡ ΠΈΠ· ΡΡΠΈΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ² ΠΈΠΌΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ ΠΏΠΎΠ±Π»ΠΈΠ·ΠΎΡΡΠΈ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π°.
ΠΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. Π Π‘++ Ρ Π½Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ (ΠΈ ΡΡΠΎ ΡΠ°ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅) ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΈΠΏΠΎΠ², ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π² ΡΠ΅Ρ ΠΆΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°Ρ ΠΈΠΌΠ΅Π½, ΡΡΠΎ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ (Π² ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΡΠ°Π±Π»ΠΎΠ½Ρ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ), Π½Π΅ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ. ΠΠΎΡΡΠ°ΡΠ°ΠΉΡΠ΅ΡΡ Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡΡΡ Π² ΡΡΡ Π»ΠΎΠ²ΡΡΠΊΡ.
ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π²ΡΠ²ΠΎΠ΄ β Π²Π°ΠΌ Π½Π΅ Π½Π°Π΄ΠΎ Π·Π½Π°ΡΡ Π²ΡΠ΅ ΡΡΠΈ ΡΠΎΠ½ΠΊΠΎΡΡΠΈ. ΠΡΠΎΡΡΠ΅ΠΉΡΠΈΠΉ ΠΏΡΡΡ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΡΠΎΠΉ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ β ΡΡΠΎ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, Π½Π΅ ΡΠ²Π»ΡΡΡΠΈΡ ΡΡ ΡΠ°ΡΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΡΠΈΠΏΠ° X, Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½, Π³Π΄Π΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ X, ΠΈ Π² ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ ΡΠ°Π±Π»ΠΎΠ½Ρ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Π² ΡΠΎ ΠΆΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½, ΡΡΠΎ ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΡΠΈΠΏ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. ΠΠ°, ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π‘++ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°Π±Π»ΠΎΠ½Ρ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ copy ΠΈΠ»ΠΈ distance, Π² ΡΠΎ ΠΆΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½, ΡΡΠΎ ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΈΠΏΠΎΠ², ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ pair ΠΈΠ»ΠΈ vector. ΠΡΠ΅ ΠΎΠ½ΠΈ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½. ΠΡΠΎ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π²Π΅ΡΡΠΌΠ° ΡΠΎΠ½ΠΊΠΈΠ΅ ΠΈ ΡΡΡΠ΄Π½ΠΎ Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΡΠ΅ΠΌΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. Π ΡΡΠ°ΡΡΡΡ, ΡΠ΅ΠΏΠ΅ΡΡ Ρ Π½Π°Ρ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠΏΡΡΠ° ΠΈ ΠΌΡ Π·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΡΡΡΠΏΠ°ΡΡ. ΠΠ΅ Π΄Π΅Π»Π°ΠΉΡΠ΅ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅.
"ΠΠ±ΠΎΡΠΎΡΠ½Π°Ρ ΡΡΠΎΡΠΎΠ½Π°" ΡΡΠΎΠ³ΠΎ Π²ΠΎΠΏΡΠΎΡΠ° ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ Π² ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ 57.
Π‘ΡΡΠ»ΠΊΠΈ[Stroustrup00] Β§10.3.2, Β§11.2.4 β’ [Sutter00] Β§34 β’ [Sutter02] Β§39-40
59. ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ using Π΄Π»Ρ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ² ΠΈΠΌΠ΅Π½ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΡ ΡΠ°ΠΉΠ»Π°Ρ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΎΠΉ #include
ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Π° using Π΄Π»Ρ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ² ΠΈΠΌΠ΅Π½ ΡΠΎΠ·Π΄Π°Π½Π° Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΄ΠΎΠ±ΡΡΠ²Π°, Π° Π½Π΅ Π΄Π»Ρ Π³ΠΎΠ»ΠΎΠ²Π½ΠΎΠΉ Π±ΠΎΠ»ΠΈ Π΄ΡΡΠ³ΠΈΡ . ΠΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ using ΠΏΠ΅ΡΠ΅Π΄ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΎΠΉ #include.
ΠΡΠ²ΠΎΠ΄: Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ using Π΄Π»Ρ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ² ΠΈΠΌΠ΅Π½ ΠΈΠ»ΠΈ using-ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΡ ΡΠ°ΠΉΠ»Π°Ρ . ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΊΠ²Π°Π»ΠΈΡΠΈΡΠΈΡΡΠΉΡΠ΅ Π²ΡΠ΅ ΠΈΠΌΠ΅Π½Π°. (ΠΡΠΎΡΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ· ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π·Π½Π°ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ #include ΠΌΠΎΠ³ΡΡ ΠΏΠΎΡΠ²ΠΈΡΡΡΡ Π² ΡΠ΅ΠΊΡΡΠ΅ ΠΏΠΎΡΠ»Π΅ Π½ΠΈΡ .)
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΠΊΡΠ°ΡΡΠ΅: Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎ ΠΈ Π±Π΅Π· ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ using Π² ΡΠ²ΠΎΠΈΡ ΡΠ°ΠΉΠ»Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΡΠ»Π΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² #include. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΠ΅ΡΡ Π·Π°ΡΠ²Π»Π΅Π½ΠΈΡ ΠΈΡ ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΠΊΠΎΠ², ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ using Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ Π·Π»ΠΎΠΌ ΠΈ Π½Π΅ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠ°Ρ ΡΠ΅Π»ΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ² ΠΈΠΌΠ΅Π½. ΠΠ½ΠΈ ΠΏΡΠΎΡΡΠΎ Π΄Π΅Π»Π°ΡΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΡΠΌΠΈ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ.
ΠΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΌΠΎΡΠ½ΠΎΠ΅ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ Π΄Π»Ρ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΡΡΠΈ ΠΈΠΌΠ΅Π½. Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° Π΄Π»Ρ ΡΠ²ΠΎΠΈΡ ΡΠΈΠΏΠΎΠ² ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ, Π½ΠΎ Π² ΡΠΎΠΌ ΡΠ΅Π΄ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π²ΡΠ±ΡΠ°Π»ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ ΠΈΠΌΠ΅Π½Π°, ΠΈ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΠΌΠ΅ΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΊΠΎΠ΄Π΅, ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΡΡΠΎΠ±Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΉ ΠΊΠΎΠ΄ ΡΠ²Π½ΠΎ ΠΊΠ²Π°Π»ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π» ΠΈΠΌΡ, ΡΠΊΠ°Π·Π°Π², ΠΈΠΌΡ ΠΈΠ· ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΡΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅. ΠΠ΄Π½Π°ΠΊΠΎ Π² ΠΏΠΎΠ΄Π°Π²Π»ΡΡΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΡΡΠΈ ΠΈΠΌΠ΅Π½ Π½Π΅ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΡΡΡ. ΠΠΎΡΡΠΎΠΌΡ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ using, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΠΎΠ±Π»Π΅Π³ΡΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ² ΠΈΠΌΠ΅Π½, ΡΠ½ΠΈΠΆΠ°Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²Π²ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° (ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² ΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ using Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π· ΡΠ²Π½ΠΎΠ΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Ρ ΠΈΠΌΠ΅Π½ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΡΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ΅ ΠΈΠΌΡ). Π ΡΠ΅Π΄ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ ΠΈΠΌΠ΅Π½ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ using Π½Π΅ ΠΏΡΠ΅ΠΏΡΡΡΡΠ²ΡΡΡ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΊΠ²Π°Π»ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΈΠΌΠ΅Π½ Π΄Π»Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ΅Π°Π»ΡΠ½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΡΠ΅ΠΉ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΡΡΠΈ.
ΠΠ΄Π½Π°ΠΊΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ using ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΈ Π²Ρ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ Π²Π»ΠΈΡΠ»ΠΈ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠ΄. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΈΡ Π½Π΅Π»ΡΠ·Ρ ΡΠΏΠΎΡΡΠ΅Π±Π»ΡΡΡ Π³Π΄Π΅ ΠΏΠΎΠΏΠ°Π»ΠΎ, Π³Π΄Π΅ Π·Π° Π½ΠΈΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ Π΅ΡΠ΅ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΉ ΠΊΠΎΠ΄. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΈΡ Π½Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΡ ΡΠ°ΠΉΠ»Π°Ρ (ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π² Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ β Π²Ρ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²Π½ΠΎΡΠΈΡΡ ΠΏΡΡΠ°Π½ΠΈΡΡ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² ΡΡΠΈΡ ΡΠ°ΠΉΠ»Π°Ρ ) ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΎΠΉ #include (ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ Π²Ρ ΠΏΠΎ ΡΡΡΠΈ Π²Π½ΠΎΡΠΈΡΠ΅ ΠΈΡ Π² ΡΠ΅ΠΊΡΡ ΡΡΠΈΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²).
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° using (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, using namespace A;) Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π·Π°Π³ΡΡΠ·Π½Π΅Π½ΠΈΠ΅ Π² ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π½Π° ΠΊΠΎΠ΄, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π·Π° Π½Π΅ΠΉ ΠΈ Π½Π΅ ΠΎΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½Π½ΡΠΉ ΠΎ Π½Π°Π»ΠΈΡΠΈΠΈ ΡΡΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ: ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅Ρ ΠΎΠ΄Π½ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½ Π² Π΄ΡΡΠ³ΠΎΠ΅, Π²ΠΊΠ»ΡΡΠ°Ρ Π΄Π°ΠΆΠ΅ ΡΠ΅ ΠΈΠΌΠ΅Π½Π°, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ Π½Π΅ Π±ΡΠ»ΠΈ Π²ΠΈΠ΄Π½Ρ, ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π»Π΅Π³ΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠΌΡΡΠ» ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π·Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΎΠΉ ΠΊΠΎΠ΄Π°.
ΠΠΎ Π²ΠΎΡ ΠΎΠ΄Π½Π° ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ°: ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΡΠΈΡΠ°ΡΡ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ using Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, using N::Widget;) Π²ΠΏΠΎΠ»Π½Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ. Π’Π°ΠΊΠΈΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ, ΠΎΠΏΠ°ΡΠ½Ρ, ΠΏΡΠΈΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ½ΠΊΠΈΠΌ ΠΈ Ρ ΠΈΡΡΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄: