ΠΠ° Π½ΠΈΠΊΠ°ΠΊ! ΠΡΠ΅ ΡΠ°Π· ΠΏΠΎΠ²ΡΠΎΡΡ: ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π² ΡΠ°Π·Π½ΡΡ Π΅Π΄ΠΈΠ½ΠΈΡΠ°Ρ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΈ, Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½. ΠΠ° ΡΠΎ Π΅ΡΡΡ ΡΠ²ΠΎΡ ΠΏΡΠΈΡΠΈΠ½Π°. ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Β«ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉΒ» ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΡΡΠ΄Π½ΠΎ. ΠΡΠ΅Π½Ρ ΡΡΡΠ΄Π½ΠΎ. ΠΠ΅ΡΠ°Π·ΡΠ΅ΡΠΈΠΌΠΎ ΡΡΡΠ΄Π½ΠΎ. Π Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ β ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ Π΅Π΄ΠΈΠ½ΠΈΡ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΈ ΠΈ Π½Π΅Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΡΠ΅ΠΌ Π½Π΅ΡΠ²Π½ΠΎΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² (ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈ ΡΠ°ΠΌΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π½Π΅ΡΠ²Π½ΠΎΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ²) β Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π½ΠΎ ΠΎΠ±ΡΡΠ½ΠΎ Π΄Π°ΠΆΠ΅ Π½Π΅ ΡΡΠΎΠΈΡ ΠΈΡΠΊΠ°ΡΡ ΡΠ°ΡΡΠ½ΡΠ΅ ΡΠ»ΡΡΠ°ΠΈ, ΠΊΠΎΠ³Π΄Π° ΡΡΠΎΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΌΠΎΠΆΠ½ΠΎ.
Π ΡΡΠ°ΡΡΡΡ, Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΡΡΡΠ°Π½ΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΡΠΆΠ½ΠΎ Π»ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π½Π΅Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ. ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π² Π½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ. ΠΠ»ΠΈΠ΅Π½ΡΡ Π·Π°ΡΠ΅ΠΌ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΠΌΠ΅ΡΡΠΎ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ. ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Π½Π΅Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π·Π°ΠΌΠ΅Π½ΡΡΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ (Π·Π½Π°ΠΊΠΎΠΌΡΠ΅ Ρ ΠΏΠ°ΡΡΠ΅ΡΠ½Π°ΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π»Π΅Π³ΠΊΠΎ ΡΠ·Π½Π°ΡΡ Π² ΡΡΠΎΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΠΈΠΏΠΈΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠ°ΡΡΠ΅ΡΠ½Π° Singleton).
ΠΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΡΠΎΠΌ, ΡΡΠΎ C++ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ: Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ Π² ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠΎΡΡΠΎΠΌΡ Π΅ΡΠ»ΠΈ Π²Ρ Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΏΡΡΠΌΠΎΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ Π½Π΅Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΌ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΉ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠΈΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ Π²Π½ΡΡΡΠΈ Π½ΠΈΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π±ΡΡΡ ΡΠ²Π΅ΡΠ΅Π½Ρ, ΡΡΠΎ ΡΡΡΠ»ΠΊΠΈ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠ΅ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΉ, Π±ΡΠ΄ΡΡ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ, ΡΠΌΡΠ»ΠΈΡΡΡΡΡΡ Π½Π΅Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΡΠΎ ΠΈ Π½Π΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΠ»Π°ΡΠΈΡΡ Π·Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΠ΅Π³ΠΎ Π½Π΅ ΡΠΊΠ°ΠΆΠ΅ΡΡ ΠΎ ΡΠ΅Π°Π»ΡΠ½ΡΡ Π½Π΅Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°Ρ .
ΠΠΎΡ ΠΊΠ°ΠΊ ΡΡΠΎΡ ΠΏΡΠΈΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ tfs ΠΈ tempDir:
class FileSystem {...}; // ΠΊΠ°ΠΊ ΡΠ°Π½ΡΡΠ΅
FileSystem& tfs() // ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ tfs, ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ
{ // Π±ΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π² ΠΊΠ»Π°ΡΡΠ΅ FileSystem
static FileSystem fs; // ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ
// ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
return fs; // Π²ΠΎΠ·Π²ΡΠ°Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π½Π΅Π³ΠΎ
}
class Directory {...}; // ΠΊΠ°ΠΊ ΡΠ°Π½ΡΡΠ΅
Directory::Directory( params ) // ΠΊΠ°ΠΊ ΡΠ°Π½ΡΡΠ΅, Π½ΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΡΠ»ΠΊΠΈ Π½Π° tfs
{ // Π²ΡΠ·ΠΎΠ² tfs()
...
std::size_t disks = tfs().numDisks();
...
}
Directory& tempDir() // ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ tempDir,
{ // ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π² ΠΊΠ»Π°ΡΡΠ΅ Directory
static Directory td; // ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅/ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ
// ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
return td; // Π²ΠΎΠ·Π²ΡΠ°Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π½Π΅Π³ΠΎ
}
ΠΠ»ΠΈΠ΅Π½ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΡΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΡΠ°Π½ΡΡΠ΅, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π²ΠΌΠ΅ΡΡΠΎ tfs ΠΈ tempDir ΠΎΠ½ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ tfs() ΠΈ tempDir(). ΠΠ½ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ, Π²ΠΌΠ΅ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΌΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
Π€ΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ Π΅ΠΌΠΎΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΡΡΠ»ΠΊΠΈ, Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠΎΡΡΡ: ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΡΡΡΠΎΠΊΠ΅ 1 ΠΈ Π²Π΅ΡΠ½ΡΡΡ Π΅Π³ΠΎ Π² ΡΡΡΠΎΠΊΠ΅ 2. Π ΡΠ²ΡΠ·ΠΈ Ρ ΡΡΠΈΠΌ Ρ Π²Π°Ρ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΈΡΠΊΡΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΈΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌΠΈ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΡΠ°ΡΡΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ (ΡΠΌ. ΠΏΡΠ°Π²ΠΈΠ»ΠΎ 30). Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π² ΡΠ΅Π±Π΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΡΡΠ»ΠΎΠΆΠ½ΡΠ΅Ρ ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ . ΠΠΎ ΡΡΡ Π½ΠΈΠΊΡΠ΄Π° Π½Π΅ Π΄Π΅ΡΡΡΡ: Π½Π΅ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠΎΠ΄Π° β Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΈΠ»ΠΈ Π½Π΅Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ β ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² ΡΠ»ΡΡΠ°Π΅ Π½Π°Π»ΠΈΡΠΈΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ². Π Π΅ΡΠΈΡΡ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠ·Π²Π°Π² ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ, Π½Π° ΡΡΠ°ΠΏΠ΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΠ³Π΄Π° Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ. ΠΡΠΎ ΠΈΡΠΊΠ»ΡΡΠΈΡ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΡΡΡ Π² Ρ ΠΎΠ΄Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎΡΡΡ ΠΈΠ΄Π΅ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠΈΡ ΡΡΡΠ»ΠΊΠΈ, Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠΌ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π»ΠΈ Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ ΡΠ°Π·ΡΠΌΠ½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π²Π°ΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΡΠ»ΠΈ Π²Ρ Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΊΠΎΠ΄, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ A Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ ΠΏΡΠ΅ΠΆΠ΄Π΅, ΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ B, ΠΈ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΠ΄Π΅Π»Π°Π΅ΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ A Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠΉ ΠΎΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ B, ΡΠΎ Π²Π°Ρ ΠΆΠ΄ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ β ΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΎΠΌ! ΠΡΠ»ΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΡΠ°ΠΊΠΈΡ ΠΏΠ°ΡΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΈΡΡΠ°ΡΠΈΠΉ, ΡΠΎ ΠΎΠΏΠΈΡΠ°Π½Π½Π°Ρ ΡΡ Π΅ΠΌΠ° ΡΠΎΡΠ»ΡΠΆΠΈΡ Π²Π°ΠΌ Π΄ΠΎΠ±ΡΡΡ ΡΠ»ΡΠΆΠ±Ρ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Π² ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ .
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π΄ΠΎ ΠΈΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΈ Π²Π΅ΡΠΈ. ΠΠ΅ΡΠ²ΠΎΠ΅: Π²ΡΡΡΠ½ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ ΡΠ²Π»ΡΡΡΠΈΠ΅ΡΡ ΡΠ»Π΅Π½Π°ΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ². ΠΡΠΎΡΠΎΠ΅: ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΏΠΈΡΠΊΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ»Π΅Π½ΠΎΠ² Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠ°ΡΡΠ΅ΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. Π Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΡΡΠ΅ΡΡΠ΅: ΠΎΠ±ΠΎΠΉΡΠΈ Π·Π° ΡΡΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π΅Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π² ΡΠ°Π·Π½ΡΡ Π΅Π΄ΠΈΠ½ΠΈΡΠ°Ρ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΈ.
Π§ΡΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠΌΠ½ΠΈΡΡβ’ ΠΡΠ΅Π³Π΄Π° Π²ΡΡΡΠ½ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ², ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ C++ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ, ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ Π²ΡΠ΅Π³Π΄Π°.
β’ Π ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ ΠΎΡΠ΄Π°Π²Π°ΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠ² ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ»Π΅Π½ΠΎΠ² ΠΏΠ΅ΡΠ΅Π΄ ΠΏΡΡΠΌΡΠΌ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² ΡΠ΅Π»Π΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°. ΠΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΠΉΡΠ΅ Π΄Π°Π½Π½ΡΠ΅-ΡΠ»Π΅Π½Ρ Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΎΠ½ΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ Π² ΠΊΠ»Π°ΡΡΠ΅.
β’ ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠΌ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² ΡΠ°Π·Π½ΡΡ Π΅Π΄ΠΈΠ½ΠΈΡΠ°Ρ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΈ, Π·Π°ΠΌΠ΅Π½ΡΡ Π½Π΅Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ.
ΠΠ»Π°Π²Π° 2
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ, Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΡ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ
ΠΠΎΡΡΠΈ Π²ΠΎ Π²ΡΠ΅Ρ Π²Π°ΡΠΈΡ ΠΊΠ»Π°ΡΡΠ°Ρ Π±ΡΠ΄ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠ², Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ. ΠΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π΅Π³ΠΎ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ Π΅ΠΌΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΡΠΈΠ±ΠΊΠΈ Π² ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΡΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡ ΠΊ Π΄Π°Π»Π΅ΠΊΠΎ ΠΈΠ΄ΡΡΠΈΠΌ ΠΈ Π½Π΅ΠΏΡΠΈΡΡΠ½ΡΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡΠΌ ΠΈ ΠΎΡΡΠ°ΠΆΠ°ΡΡΡΡ Π½Π° Π²ΡΠ΅Ρ Π²Π°ΡΠΈΡ ΠΊΠ»Π°ΡΡΠ°Ρ , ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ. Π Π½Π°ΡΡΠΎΡΡΠ΅ΠΉ Π³Π»Π°Π²Π΅ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Ρ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΏΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΡ ΠΎΡΠ½ΠΎΠ²Ρ ΠΊΠ»Π°ΡΡΠΎΠ².
ΠΡΠ°Π²ΠΈΠ»ΠΎ 5: ΠΠ°ΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ C++ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΌΠΎΠ»ΡΠ°
ΠΠΎΠ³Π΄Π° ΠΏΡΡΡΠΎΠΉ ΠΊΠ»Π°ΡΡ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π΅Ρ Π±ΡΡΡ ΠΏΡΡΡΡΠΌ? ΠΠΎΠ³Π΄Π° Π·Π° Π½Π΅Π³ΠΎ Π±Π΅ΡΠ΅ΡΡΡ C++. ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ ΠΎΠ±ΡΡΠ²ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ, ΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠ΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ Π·Π° Π²Π°Ρ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ ΠΎΠ±ΡΡΠ²ΠΈΡΠ΅ Π²ΠΎΠΎΠ±ΡΠ΅ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°, ΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΡΠ΅ ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΡΠ΄ΡΡ ΠΎΡΠΊΡΡΡΡΠΌΠΈ ΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌΠΈ (ΡΠΌ. ΠΏΡΠ°Π²ΠΈΠ»ΠΎ 30). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊΠΎΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅:
class Empty {};
ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ:
class Empty {
public:
Empty() {...} // ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
Empty(const Empty& rhs) {...} // ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ
~Empty() {...} // Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ β ΡΠΌ. Π½ΠΈΠΆΠ΅
// ΠΎ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠ°Ρ
Empty& operator=(const Empty& rhs) {...} // ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ
};
ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΡΡ, ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π½ΡΠΆΠ½Ρ, Π½ΠΎ ΠΌΠ°Π»ΠΎ Π½Π°ΠΉΠ΄Π΅ΡΡΡ ΡΠ»ΡΡΠ°Π΅Π², ΠΊΠΎΠ³Π΄Π° Π±Π΅Π· Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ. Π’Π°ΠΊ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ:
Empty e1; // ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ;
// Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ
Empty e2(e1); // ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ
e2 = e1; // ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ
ΠΡΠ°ΠΊ, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΠΈΡΠ΅Ρ ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ Π²Π°Ρ, Π½ΠΎ ΡΡΠΎ ΠΎΠ½ΠΈ Π΄Π΅Π»Π°ΡΡ? ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ β ΡΡΠΎ ΠΌΠ΅ΡΡΠ°, Π² ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ ΡΠ»ΡΠΆΠ΅Π±Π½ΡΠΉ ΠΊΠΎΠ΄, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π²ΡΠ·ΠΎΠ² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠ² ΠΈ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠΎΠ² Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π΄Π°Π½Π½ΡΡ -ΡΠ»Π΅Π½ΠΎΠ². ΠΡΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΌ (ΡΠΌ. ΠΏΡΠ°Π²ΠΈΠ»ΠΎ 7), Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΡ Π½Π΅ ΠΈΠ΄Π΅Ρ ΠΎ ΠΊΠ»Π°ΡΡΠ΅, Π½Π°ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡΡ, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π΅ΡΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ (Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΡΡΡ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΡΡΡ ΠΎΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°).
Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ, ΡΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΎΡΡΠΎ ΠΊΠΎΠΏΠΈΡΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ»Π΅Π½ Π΄Π°Π½Π½ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² ΡΠ΅Π»Π΅Π²ΠΎΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ°Π±Π»ΠΎΠ½ NamedObject, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π°ΡΡΠΎΡΠΈΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½Π° Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΡΠΈΠΏΠ° T:
Template<typename T>
class NamedObject {
public:
NamedObject(const char *name, const T& value);
NamedObject(const std::string& name, const T& value);
...
private:
std:string nameValue;
T objectValue;
};
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² ΠΊΠ»Π°ΡΡΠ΅ NamedObject ΠΎΠ±ΡΡΠ²Π»Π΅Π½ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π½Π΅ ΡΡΠ°Π½Π΅Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΡΠΎ Π²Π°ΠΆΠ½ΠΎ. ΠΠ½Π°ΡΠΈΡ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΊΠ»Π°ΡΡ ΡΠ°ΠΊ, ΡΡΠΎ Π΅Π³ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Ρ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ΡΠΎ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡΡΡ, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΡΠΎΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅Ρ Π²Π°ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΈΠ½ΠΈΡΠΈΠ°ΡΠΈΠ²Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ Π΅ΡΠ΅ ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π±Π΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
Π ΠΊΠ»Π°ΡΡΠ΅ NamedObject Π½Π΅Ρ Π½ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΈΡ (ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ). ΠΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΡΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ: