C ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΡΡΡΡΠΊΡΡΡΡ: ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Struct Π² C++? — CodeRoad
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅
c++ — ΠΠ° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π΅Π»ΡΠ·Ρ ΡΡΡΠ»Π°ΡΡΡΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ std :: string Π² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅ union ΡΡΡΡΠΊΡΡΡΡ
Π£ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΠΎΡΠ΅Π½Ρ Π±Π°Π·ΠΎΠ²Π°Ρ ΡΡΡΡΠΊΡΡΡΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π΅ΡΡΡ enum ΠΈ union.
typedef struct
{
enum v{a,b,c}v;
union w{
int a;
bool b;
std::string c;
}w;
}Data_Set2;
int main()
{
Data_Set2 val; // Shows errror that the default constructor cannot be referenced
return 0;
}
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ°ΠΊΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ Ρ ΠΏΠΎΠ»ΡΡΠ°Ρ ΠΊΠΎΠ΄ ΠΎΡΠΈΠ±ΠΊΠΈ C2280, ΡΡΠΎ Π½Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π΅Π»ΡΠ·Ρ ΡΡΡΠ»Π°ΡΡΡΡ. ΠΠΎΠ³Π΄Π° Ρ ΠΎΠ±ΡΡΠ²Π»ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π΄ΡΡΠ³ΠΎΠΌΡ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅
typedef struct
{
enum v{a,b,c}v;
union w{
int a;
bool b;
std::string c;
}; // changed here.
}Data_Set2;
ΠΡΠΈΠ±ΠΊΠ° Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ. Π― Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ ΠΏΡΠΈΡΠΈΠ½Ρ ΡΡΠΎΠ³ΠΎ. ΠΠΎΠΆΠ΅Ρ Π»ΠΈ ΠΊΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ
4
D_wanna_B_coder
5 Π€Π΅Π² 2019 Π² 16:11
3 ΠΎΡΠ²Π΅ΡΠ°
ΠΡΡΡΠΈΠΉ ΠΎΡΠ²Π΅Ρ
https://en.cppreference.com/w/cpp/language/union (ΠΈΠ»ΠΈ ΡΠΌ. ΡΡΠ°Π½Π΄Π°ΡΡ):
ΠΡΠ»ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ»Π΅Π½ Π΄Π°Π½Π½ΡΡ Ρ Π½Π΅ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ-ΡΠ»Π΅Π½ΠΎΠΌ (ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ / ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ, Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ / ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ), ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΡΠ΄Π°Π»ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΠ²Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ.
ΠΡΠ»ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ»Π΅Π½ Π΄Π°Π½Π½ΡΡ Ρ Π½Π΅ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΡΠΌ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ΄Π°Π»ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ½ΡΠΉ ΡΠ»Π΅Π½ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
ΠΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
Π Π²Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ²Π½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΈ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ. ΠΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄ Π½Π°:
typedef struct
{
enum v{a,b,c} v;
union w{
int a;
bool b;
std::string c;
w() {} // Explicit constructor definition
~w() { }; // Explicit destructor definition
} w;
} Data_Set2;
ΠΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ.
ΠΠ°ΠΊ ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΎΡΡ Π² ΠΌΠΎΠ΅ΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²Π·Π³Π»ΡΠ½ΡΡΡ Π½Π° std::any
ΠΈ std::variant
. ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠΈΠΏΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠ΅ ΡΠΎΡΠ·Ρ ΠΈ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π±ΡΠ΄Π΅Ρ Π»ΡΡΡΠΈΠΌ Π²ΡΠ±ΠΎΡΠΎΠΌ Π² Π²Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π²Π°Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ (ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, MSVC) Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ C ++ 17.
Π ΠΠΠΠΠ’ΠΠ ΠΠΠΠ’Π¬: ΠΠ°ΠΊ ΠΏΡΠΎΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π» eerorika, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ²Π΅ΡΠ΅Π½Ρ, ΡΡΠΎ Π²Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ Π΅Π³ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠ°. Π‘ΡΡΠ»ΠΊΠ°, ΡΠΊΠ°Π·Π°Π½Π½Π°Ρ Π² Π½Π°ΡΠ°Π»Π΅, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΡΡΠΎΠΊ ΠΈ Π²Π΅ΠΊΡΠΎΡΠΎΠ² ΠΈ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½Π° Π²Π²ΠΎΠ΄ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎ Π»ΠΎΠ²ΡΡΠ΅ΠΊ Π΄Π»Ρ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ. ΠΠΎΡΡΠΎΠΌΡ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΠΏΡΡΠ°Π΅ΡΠ΅ΡΡ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π·Π° ΠΊΡΠ»ΠΈΡΠ°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΠΈΠΏΡ POD, Ρ Π±Ρ ΠΏΠΎΡΠΎΠ²Π΅ΡΠΎΠ²Π°Π» Π²Π°ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ std::variant
.
3
andreee
17 ΠΠ΅ΠΊ 2019 Π² 09:38
Π ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ-ΡΠ»Π΅Π½, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠΎ Π²ΡΠΎΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΠ΅ ΡΠ»Π΅Π½ ΡΠΈΠΏ , ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ΄Π°ΡΡ ΡΡ ΠΆΠ΅ ΠΎΡΠΈΠ±ΠΊΡ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π΅Π³ΠΎ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ°.
Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ, ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π΅Π³ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ:
union w{
int a;
bool b;
std::string c;
// Default constructor initialize the string member
w() : c()
{}
}w;
2
Some programmer dude
5 Π€Π΅Π² 2019 Π² 13:14
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ w
Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΈΡΡΠ΅ΠΌΡΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π½ΠΈ ΡΠ°Π·ΡΡΡΠ°Π΅ΠΌΡΠΌ. ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ Π½Π΅ Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΡΡ Π½Π΅ΡΠ²Π½ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ»Π΅Π½ c
Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½ΠΈ ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΠΎ, Π½ΠΈ ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΠΎ ΡΠ°Π·ΡΡΡΠ°Π΅ΠΌΡΠΌ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠ»Π΅Π½Π° ΡΠΈΠΏΠ° w
ΠΏΡΠΎΡΡΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠΠΎ Π²ΡΠΎΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²Ρ ΡΠ΄Π°Π»ΡΠ΅ΡΠ΅ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠ°, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π½Π΅Ρ.
Π§ΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ w
ΠΊΠΎΠ½ΡΡΡΡΠΈΡΡΠ΅ΠΌΡΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ:
union w{
int a;
bool b;
std::string c;
w() // Could activate one of the members if so desired
{}
Π§ΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ w
ΡΠ°Π·ΡΡΡΠ°Π΅ΠΌΡΠΌ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ (Π½ΠΎ ΡΠΈΡΠ°ΠΉΡΠ΅ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ°):
~w(){
//TODO destruct the active member
}
} w;
Π‘ΠΎΠ²Π΅ΡΡ ΠΏΠΎ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΡ Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠ»Π΅Π½Π°:
- ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΡΠ½ΠΈΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΡΡΠ°ΡΡΠ½ΠΈΠΊ Π°ΠΊΡΠΈΠ²Π΅Π½.
- ΠΠΎΡΡΡΠΏ ΠΊ Π½Π΅Π°ΠΊΡΠΈΠ²Π½ΠΎΠΌΡ ΡΠ»Π΅Π½Ρ ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
- ΠΡΠ»ΠΈ c Π°ΠΊΡΠΈΠ²Π΅Π½, Π½Π΅ ΡΠ½ΠΈΡΡΠΎΠΆΠ°Ρ Π΅Π³ΠΎ ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Π Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅: Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ w
Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ ΠΏΡΠΈ Π°ΠΊΡΠΈΠ²Π½ΠΎΠΌ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠ΅ c
. Π’Π°ΠΊΠΎΠΉ ΠΈΠ½Π²Π°ΡΠΈΠ°Π½Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠ΅ Data_Set2
, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ v
ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ Π°ΠΊΡΠΈΠ²Π½ΡΠΌ (ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΡΡΠ³ΠΈΠΌ ΠΈΠ½Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ; ΡΡΠΈ ΡΠ»Π΅Π½Ρ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΡΠΊΡΡΡΡΠΌΠΈ).
3
eerorika
6 Π€Π΅Π² 2019 Π² 14:23
C# NET: Class vs Struct ΠΈΠ»ΠΈ Π² ΡΡΠΌ ΡΠ°Π·Π»ΠΈΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΠ»Π°ΡΡΠΎΠΌ ΠΈ Π‘ΡΡΡΠΊΡΡΡΠΎΠΉ
ΠΡΠΎΡΡΠΎ ΠΎ NET |
created:
7/10/2011
|
published:
7/10/2011
|
updated:
11/10/2021
|
view count:
89406
| comments:
30
ΠΠ½Π΅ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π² ΠΎΠ±ΡΡΠ½ΠΎΠΉ βΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉβ ΠΆΠΈΠ·Π½ΠΈ ΡΡΡΡΠΊΡΡΡΡ (struct), Π½ΠΎ Π²ΠΎΠΎΠ±ΡΠ΅, Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π·Π½Π°ΡΡ ΠΎΠ± ΡΡΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ΅. Π Π·Π°ΡΠ°ΡΡΡΡ, Π΄Π»Ρ ΠΏΡΠΎΡΡΠΎΡΡ ΡΠ²ΠΎΠ΅ΠΉ «ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ» ΠΆΠΈΠ·Π½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π²ΡΠ΅Π³Π΄Π° ΠΊΠ»Π°ΡΡΡ (class). Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ Π±Ρ Ρ ΠΎΡΠ΅Π» Π² ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ ΡΠ°Π· ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΡ Π½Π° ΡΠ°Π·Π»ΠΈΡΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ ΠΈ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ struΡture?
Π‘ΡΡΡΠΊΡΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ
ΠΎΠΆΠΈ Π½Π° ΠΊΠ»Π°ΡΡΡ, Π½ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΊΠ»Π°ΡΡ β ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠ»ΠΎΡΠ½ΡΠΌ ΡΠΈΠΏΠΎΠΌ (reference type), Π° ΡΡΡΡΠΊΡΡΡΡ β Π·Π½Π°ΡΠΈΠΌΡΠΉ ΠΊΠ»Π°ΡΡ (value type). Π ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΊΠ»Π°ΡΡΡ Π²ΡΠ΅Π³Π΄Π° ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π², ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠΉ, βΠΊΡΡΠ΅β (heap), Π° ΡΡΡΡΠΊΡΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π² ΡΡΠ΅ΠΊΠ΅ (stack). Π¦ΠΈΡΠ°ΡΠ° ΠΈΠ· ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ: «ΠΠΌΡ
ΠΎ, Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΡΡΡΡΠΊΡΡΡ ΠΈ ΠΊΠ»Π°ΡΡΠΎΠ²: ΡΡΡΡΠΊΡΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (ΡΠΎ Π΅ΡΡΡ ΠΊΠΎΠΏΠΈΡΡΡΡΡΡ), ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² — ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅. ΠΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½Π΅ΠΉΡΠΈΠΌ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ΠΌ Π² ΠΈΡ
ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ, Π° Π½Π΅ ΡΠΎ, Π³Π΄Π΅ ΠΎΠ½ΠΈ Ρ
ΡΠ°Π½ΡΡΡΡ. ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΡΡΡΡΠΊΡΡΡΡ ΡΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ out ΠΈ ref.»
ΠΠ»ΡΡΠ΅Π²ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΡΠ°ΡΡΠΈ:Β Π§Π΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ ΠΡ Π±ΡΠ΄Π΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π²ΠΌΠ΅ΡΡΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ (Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½Π΅Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΊΠ°Π·Π°ΡΡ β ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΡ ) ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠ΅ΠΌ ΠΌΠ΅Π½Π΅Π΅ Π·Π°ΡΡΠ°ΡΠ½ΡΠΌ ΠΏΠΎ ΡΠ΅ΡΡΡΡΠ°ΠΌ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ. Π‘ΠΌΠ΅Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ, ΡΡΠΎ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΡ ΠΏΠΎΡΠ΅ΠΌΡβ¦ βΠΊΡΡΠ°β, βΡΠ±ΠΎΡΡΠΈΠΊ ΠΌΡΡΠΎΡΠ°β, βΠ½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Ρ ΠΏΡΠΎΡ ΠΎΠ΄Π°β, ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ βΡΡΡΠ½ΠΎΠ³ΠΎβ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΡΡΠ΅ΠΉ ΠΈ ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠΌ ΠΌΡΡΠΎΡΠ°. ΠΡΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ ΡΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ.
Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ ΠΊΠ»Π°ΡΡΡ, ΡΡΡΡΠΊΡΡΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ»Ρ, ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ. Π₯ΠΎΡΡ ΠΏΡΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ Π½Π°Π΄ΠΎ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ (Π±ΡΠ΄Π΅Ρ Π΄Π°Π»ΡΡΠ΅ ΠΏΠΎ ΡΠ΅ΠΌΠ΅), ΠΈΠ±ΠΎ ΡΡΠΎ Π΅ΡΡΡ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎΠ΅ ΠΏΠΎΠ½ΡΡΠΈΠ΅ ΠΏΡΠΈ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΡΡΡΡΠΊΡΡΡ.
Π‘ΡΡΡΠΊΡΡΡΡ Π²ΡΠ΅Π³Π΄Π° Ρ ΠΠ°ΠΌΠΈΠΠ΅ Ρ ΠΎΡΠ΅ΡΡΡ Π΄ΡΠΌΠ°ΡΡ, ΡΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, Π΄Π»Ρ ΠΠ°Ρ ΡΡΡΠΏΡΠΈΠ·ΠΎΠΌ. Π ΡΠ·ΡΠΊΠ΅ C# ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠ΅ ΡΠΈΡΠ»ΠΎΠ²ΡΠ΅ ΡΠΈΠΏΡ int, long, float ΡΠ²Π»ΡΡΡΡΡ Π°Π»ΡΡΡΠ°ΠΌΠΈ Π΄Π»Ρ ΡΡΡΡΠΊΡΡΡ System.Int32, System.Int64 ΠΈ System.Single ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. ΠΡΠΈ ΡΡΡΡΠΊΡΡΡΡ ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ»Ρ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ. ΠΡ ΠΎΠ±ΡΡΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΡΡΡΠΊΡΡΡ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ ToString. Π’Π°ΠΊΠΆΠ΅ Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΡΡΡΠΊΡΡΡ Π΅ΡΡΡ ΡΡΠ°ΡΠΈΡΠ½ΡΠ΅ ΠΏΠΎΠ»Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Int32.MaxValue ΠΈΠ»ΠΈ Int32.MinValue. ΠΠΎΠ»ΡΡΠ°Π΅ΡΡΡ, ΡΡΠΎ ΠΡ ΡΠΆΠ΅ Π² ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΉ «ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ» ΠΆΠΈΠ·Π½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ, Π° Π·Π½Π°ΡΠΈΡ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ Π½ΠΈΠΌΠΈ.
Π’Π°Π±Π»ΠΈΡΠ° ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΡΡΡΡΠΊΡΡΡ Π² Microsoft. NET Framework
Π ΡΠ°Π±Π»ΠΈΡΠ΅ ΡΠΊΠ°Π·Π°Π½Ρ Π°Π»ΡΡΡΡ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΈΠΌ ΡΠΈΠΏΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π°Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ΅ΠΌ ΡΠΈΠΏΠ΅ (ΡΡΡΡΠΊΡΡΡΠ° ΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΡ).
Keyword | Type equivalent | Class or structure |
---|---|---|
bool | System.Boolean | Structure |
byte | System.Byte | Structure |
decimal | System.Decimal | Structure |
double | System.Double | Structure |
float | System.Single | Structure |
int | System.Int32 | Structure |
long | System.Int64 | Structure |
object | System.Object | Class |
sbyte | System.SByte | Structure |
short | System.Int16 | Structure |
string | System.String | Class |
uint | System.UInt32 | Structure |
ulong | System.UInt64 | Structure |
ushort | System.UInt16 | Structure |
ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡ
ΠΠ»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΡΡΡΠΊΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ struct, ΡΠ»Π΅Π΄ΠΎΠΌ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ ΠΈ ΡΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ:
struct Time { public int hours, minites, seconds; }
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ ΠΏΠΎΠ»Π΅ΠΉ Π² ΡΡΡΡΠΊΡΡΡΠ°Ρ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΏΠΎΡΠΎΠ±Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² Π½ΠΈΡ . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΡΠΎ-Π»ΠΈΠ±ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΈΠ½ΡΡ ΠΈΠ»ΠΈ ΡΠ΅ΠΊΡΠ½Π΄ Π±ΠΎΠ»Π΅Π΅ 60. ΠΠΎΠ»Π΅Π΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ — ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π°, Π° Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ:
struct Time { public Time(int hh, int mm, int ss) { hours = hh % 24; minutes = mm % 60; seconds = ss % 60; } public int Hours() { return hours; } ... private int hours, minutes, seconds; }
ΠΡΡΠ°ΡΠΈ, β¦ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π² ΠΠ°ΡΠΈΡ ΡΡΡΡΠΊΡΡΡΠ°Ρ . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ (==) ΠΈ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΡΠ΅ Π΅ΠΌΡ (!=) Π½Π° ΡΠ²ΠΎΠΈΡ ΡΡΡΡΠΊΡΡΡΠ°Ρ . ΠΠ΄Π½Π°ΠΊΠΎ, ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²Π½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π΄Π»Ρ ΡΠ²ΠΎΠΈΡ ΡΡΡΡΠΊΡΡΡ.
Π Π² ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ ΠΈ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΆΠ΅ Π·Π°Π»ΠΎΠΆΠ΅Π½Π° ΠΎΡΠΈΠ±ΠΊΠ°:
struct Time { public Time() { ... } // compile-time error ... }
ΠΡΠΈΡΠΈΠ½Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (Π±Π΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²) Π΄Π»Ρ ΡΡΡΡΠΊΡΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΡΠ΅Π³Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Π΅Π³ΠΎ ΡΠ°ΠΌ. Π§ΡΠΎ ΠΆΠ΅ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΊΠ»Π°ΡΡΠ°, ΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΡ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ·Π΄Π°Π»ΠΈ. Π‘Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π΄Π»Ρ ΡΡΡΡΠΊΡΡΡΡ Π²ΡΠ΅Π³Π΄Π° ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠ»Ρ Π² 0, false ΠΈΠ»ΠΈ null β ΠΊΠ°ΠΊ ΠΈ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠΎΠ². ΠΠΎΡΡΠΎΠΌΡ ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π±ΡΡΡ ΡΠ²Π΅ΡΠ΅Π½Π½ΡΠΌΠΈ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π½Π½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ Π²Π΅ΡΡΠΈ ΡΠ΅Π±Ρ βΠ°Π΄Π΅ΠΊΠ²Π°ΡΠ½ΠΎβ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠΈΠΏΠ°Ρ . ΠΡΠ»ΠΈ ΠΡ Π½Π΅ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»Ρ ΡΠ²ΠΎΠΈΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ Π² ΡΡΠΎΠΌ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΊΠ°ΠΊΠΎΠ΅-Π½ΠΈΠ±ΡΠ΄Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π΅Π³ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π·Π° ΠΠ°Ρ ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ ΠΎΡΠΈΠ±ΠΊΡ.
struct Time { private int hours, minutes, seconds; ... public Time(int hh, int mm) { this.hours = hh; this.minutes = mm; } // compile-time error: seconds not initialized }
ΠΠ΅ΡΠ²ΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π‘ΡΡΡΠΊΡΡΡΡ: ΠΡΠ΅Π³Π΄Π° Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ!
Π ΠΊΠ»Π°ΡΡΠ°Ρ ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡΒ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅ΠΉ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² ΠΌΠ΅ΡΡΠ΅ ΠΈΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ. Π ΡΡΡΡΠΊΡΡΡΠ°Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ, ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ:
struct Time { private int hours = 0; // compile-time error private int minutes; private int seconds; ... }
ΠΡΠΎΡΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π‘ΡΡΡΠΊΡΡΡΡ: ΠΠ΅Π»ΡΠ·Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π² ΠΌΠ΅ΡΡΠ΅ ΠΈΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ!
ΠΠ°Π½Π½Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ° Π² Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΠ΄Π΅ ΠΏΠΎΠ΄ΡΡΠΎΠΆΠΈΠ²Π°Π΅Ρ Π²ΡΡ Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΎΡΠ»ΠΈΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ ΠΈ ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ.
ΠΠΎΠΏΡΠΎΡ | Π‘ΡΡΡΠΊΡΡΡΠ° | ΠΠ»Π°ΡΡ |
Π ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠΈΠΏΠ° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°? | Π‘ΡΡΡΠΊΡΡΡΠ° Π·Π½Π°ΡΠΈΠΌΡΠΉ (value) ΡΠΈΠΏ | ΠΠ»Π°ΡΡ ΡΡΡΠ»ΠΎΡΠ½ΡΠΉ (reference) ΡΠΈΠΏ |
Π Π³Π΄Π΅ βΠΆΠΈΠ²ΡΡβ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²? | ΠΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΡΡΡΡΠΊΡΡΡΡ Π½Π°Π·ΡΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ βΠΆΠΈΠ²ΡΡβ ΠΎΠ½ΠΈ Π² ΡΡΠ΅ΠΊΠ΅ (stack). | ΠΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² Π½Π°Π·ΡΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΠΈ βΠΆΠΈΠ²ΡΡβ ΠΎΠ½ΠΈ Π² ΠΊΡΡΠ΅ (heap). |
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ? | ΠΠ΅Ρ | ΠΠ° |
ΠΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π±ΡΠ΄Π΅Ρ Π»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ? | ΠΠ° | ΠΠ΅Ρ |
ΠΡΠ»ΠΈ Π² ΡΠ²ΠΎΡΠΌ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ Π½Π΅ Π±ΡΠ΄ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»Ρ, Π±ΡΠ΄ΡΡ Π»ΠΈ ΠΎΠ½ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ? | ΠΠ΅Ρ | ΠΠ° |
Π Π°Π·ΡΠ΅ΡΠ°Π΅ΡΡΡ Π»ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π² ΠΌΠ΅ΡΡΠ΅ ΠΈΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ? | ΠΠ΅Ρ | ΠΠ° |
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡ ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΡΡΡΡΠΊΡΡΡΡ, ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π΅ ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΊΠ»Π°ΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΈΠΏΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ·Π΄Π°Π² ΡΡΡΡΠΊΡΡΡΡ Time, Ρ ΠΌΠΎΠ³Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π΅ Π² ΠΊΠ»Π°ΡΡΠ΅:
struct Time { private int hours, minutes, seconds; ... } class Example { private Time currentTime; public void Method(Time parameter) { Time localVariable; ... } }
ΠΡΡΠ°ΡΠΈ, β¦
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ nullable Π²Π΅ΡΡΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠΈΠΏΠ° ΡΡΡΡΠΊΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ β?β ΠΈ ΠΏΠΎΡΠΎΠΌ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π΅ΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ null:
Time? currentTime = null;
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΡΡΠΊΡΡΡ
Π ΡΡΠ°ΡΡΠ΅ Ρ Π½Π΅ ΡΠ°Π· Π³ΠΎΠ²ΠΎΡΠΈΠ», ΡΡΠΎ ΠΏΠΎΠ»Ρ ΡΡΡΡΠΊΡΡΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°, ΠΏΡΠΈΡΠ΅ΠΌ Π½Π΅ Π²Π°ΠΆΠ½ΠΎ ΠΊΠ°ΠΊΠΎΠ³ΠΎ βΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎβ ΠΈΠ»ΠΈ βΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡβ. Π ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΠΌ ΡΡΡΡΠΊΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ½Π΅ΡΡΠΈ Π΅ΡΠ΅ ΠΈ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ Π²ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΡΡΡΠΊΡΡΡΡ ΡΠ²Π»ΡΡΡΡΡ Π·Π½Π°ΡΠΈΠΌΡΠΌ ΡΠΈΠΏΠΎΠΌ, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
Time now;
Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ, Π½ΠΎ ΠΏΠΎΠ»Ρ Π½Π΅ Π±ΡΠ΄ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ, ΡΡΠΎ ΠΏΡΠΈΠ·Π½Π°ΠΊ Ρ ΠΎΡΠΎΡΠ΅Π³ΠΎ ΡΠΎΠ½Π° Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° C# ΠΈ Π΄Π° ΠΏΡΠΈΠ±ΡΠ΄Π΅Ρ Ρ ΠΠ°ΠΌΠΈ ΡΠΈΠ»Π°β¦ ΡΡΡΡΠΊΡΡΡ. Π¦ΠΈΡΠ°ΡΠ° ΠΈΠ· ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ: «Π‘ Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠΆΠ΅ Π½Π΅ ΡΠΎΠ³Π»Π°ΡΠ΅Π½. ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡΡΠ΅ Π·Π°ΠΏΠ°Π΄Π½ΡΠ΅ Π°Π²ΡΠΎΡΡ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΡΠΊΡΡΡΡ, ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Ρ ΠΊΠ»Π°ΡΡΡ. Π₯ΠΎΡΡ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΌΠΎΠ»ΠΈΡΡΡΡ Π½Π° Π½ΠΈΡ ΠΈ ΠΈΡ ΠΌΠ½Π΅Π½ΠΈΠ΅ Π½Π΅ ΡΡΠΎΠΈΡ, Π»ΡΡΡΠ΅ Π΄ΡΠΌΠ°ΡΡ ΡΠ²ΠΎΠ΅ΠΉ Π³ΠΎΠ»ΠΎΠ²ΠΎΠΉ.»
Π‘ΡΡΡΠΊΡΡΡΡ ΠΈ ΠΊΠ»Π°ΡΡΡ — SwiftBook
ΠΠ»Π°ΡΡΡ ΠΈ ΡΡΡΡΠΊΡΡΡΡ ΡΠ²Π»ΡΡΡΡΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΈ Π³ΠΈΠ±ΠΊΠΈΠΌΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ°Π½ΡΡ ΡΡΡΠΎΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ Π΄Π»Ρ ΠΊΠΎΠ΄Π° Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ Π² ΠΊΠ»Π°ΡΡΠ°Ρ ΠΈ ΡΡΡΡΠΊΡΡΡΠ°Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠ² ΡΠΎΡ ΠΆΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, ΠΊΠ°ΠΊ ΠΈ ΠΏΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ.
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Swift Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΡΡΡΡΠΊΡΡΡ. Π Swift, Π²Ρ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ ΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅, ΠΈ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΊΠΎΠ΄Π΅.
ΠΠ°ΠΌΠ΅ΡΠΊΠ°
ΠΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎ Π½Π°Π·ΡΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΊΠ»Π°ΡΡΡ ΠΈ ΡΡΡΡΠΊΡΡΡΡ Π² Swift Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±Π»ΠΈΠΆΠ΅ ΠΏΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ, ΡΠ΅ΠΌ Π² Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ , ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΊ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°ΠΌ ΠΈ ΠΊΠ»Π°ΡΡΠ°, ΠΈ ΡΡΡΡΠΊΡΡΡΡ. Π ΡΠ²ΡΠ·ΠΈ Ρ ΡΡΠΈΠΌ, ΡΠΏΠΎΡΡΠ΅Π±Π»ΡΠ΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±ΡΠΈΠΉ ΡΠ΅ΡΠΌΠΈΠ½ — ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ.
ΠΠ»Π°ΡΡΡ ΠΈ ΡΡΡΡΠΊΡΡΡΡ Π² Swift ΠΈΠΌΠ΅ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅Π³ΠΎ. Π Π² ΠΊΠ»Π°ΡΡΠ°Ρ ΠΈ Π² ΡΡΡΡΠΊΡΡΡΠ°Ρ ΠΌΠΎΠΆΠ½ΠΎ:
- ΠΠ±ΡΡΠ²Π»ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
- ΠΠ±ΡΡΠ²Π»ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΡΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ
- ΠΠ±ΡΡΠ²Π»ΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ, ΡΠ΅ΡΠ΅Π· ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ²
- ΠΠ±ΡΡΠ²Π»ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΡ, ΡΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅
- ΠΠ½ΠΈ ΠΎΠ±Π° ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½Ρ, ΡΡΠΎΠ±Ρ ΡΠ°ΡΡΠΈΡΠΈΡΡ ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ
- ΠΠ½ΠΈ ΠΎΠ±Π° ΠΌΠΎΠ³ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°ΠΌ, Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°
ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΡΠΌΠΎΡΡΠΈΡΠ΅ Π³Π»Π°Π²Ρ Π‘Π²ΠΎΠΉΡΡΠ²Π°, ΠΠ΅ΡΠΎΠ΄Ρ, ΠΠ½Π΄Π΅ΠΊΡΡ, ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΈ ΠΡΠΎΡΠΎΠΊΠΎΠ»Ρ.
ΠΠ»Π°ΡΡΡ ΠΈΠΌΠ΅ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΡ Π½Π΅Ρ Ρ ΡΡΡΡΠΊΡΡΡ:
- ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΊΠ»Π°ΡΡΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π΄ΡΡΠ³ΠΎΠ³ΠΎ
- ΠΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΈΠΏ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΊΠ»Π°ΡΡΠ° Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
- ΠΠ΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΊΠ»Π°ΡΡΠ° ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ Π»ΡΠ±ΡΠ΅ ΡΠ΅ΡΡΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»
- ΠΠΎΠ΄ΡΡΠ΅Ρ ΡΡΡΠ»ΠΎΠΊ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ ΠΎΠ΄Π½Ρ ΡΡΡΠ»ΠΊΡ Π½Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ°. ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΡΠΌΠΎΡΡΠΈΡΠ΅ ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ², ΠΠ΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΡ ΠΈ ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠΎΠ΄ΡΡΠ΅Ρ ΡΡΡΠ»ΠΎΠΊ.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² ΡΠ²ΡΠ·Π°Π½Ρ Ρ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ. ΠΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΡΠΊΡΡΡΡ ΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΈΡ Π»Π΅Π³ΡΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ. Π’Π°ΠΊΠΆΠ΅ Π½Π΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅ ΠΏΡΠΎ ΠΊΠ»Π°ΡΡΡ. ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ — Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ , Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ — ΡΡΠΎ ΡΡΡΡΠΊΡΡΡΡ ΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ
ΠΠ»Π°ΡΡΡ ΠΈ ΡΡΡΡΠΊΡΡΡΡ ΠΈΠΌΠ΅ΡΡ ΡΡ ΠΎΠΆΠΈΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ. ΠΠ»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ class, Π° Π΄Π»Ρ ΡΡΡΡΠΊΡΡΡ — ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ struct. Π ΠΎΠ±ΠΎΠΈΡ ΡΠ»ΡΡΠ°ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π²ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π²Π½ΡΡΡΡ ΠΏΠ°ΡΡ ΡΠΈΠ³ΡΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ:
class SomeClass {
// Π·Π΄Π΅ΡΡ ΠΏΠΈΡΠ΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ°
}
struct SomeStructure {
// Π·Π΄Π΅ΡΡ ΠΏΠΈΡΠ΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ
}
ΠΠ°ΠΌΠ΅ΡΠΊΠ°
Π§ΡΠΎ Π±Ρ Π²Ρ Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Π»ΠΈ, Π½ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΈΠ»ΠΈ ΡΡΡΡΠΊΡΡΡΡ, Π²Ρ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ Π½ΠΎΠ²ΡΠΉ ΡΠΈΠΏ Π² Swift. ΠΠ°Π·Π½Π°ΡΠ°ΠΉΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΡΠΈΠΏΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ UpperCamelCase(SomeClass ΠΈΠ»ΠΈ SomeStructure), ΡΡΠΎΠ±Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ°ΠΌ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈΠΌΠ΅Π½ ΡΠΈΠΏΠΎΠ² Π² Swift (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, String, Int ΠΈ Bool). Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π²ΡΠ΅Π³Π΄Π° Π½Π°Π·Π½Π°ΡΠ°ΠΉΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ ΠΈΠΌΠ΅Π½Π° Π² lowerCamelCase (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, frameRate ΠΈ incrementCount), ΡΡΠΎΠ±Ρ ΠΎΡΠ»ΠΈΡΠΈΡΡ ΠΈΡ ΠΎΡ ΠΈΠΌΠ΅Π½ ΡΠΈΠΏΠΎΠ².
ΠΡΠΈΠΌΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΡΡΠΊΡΡΡΡ ΠΈ ΠΊΠ»Π°ΡΡΠ°:
struct Resolution {
var width = 0
var height = 0
}
class VideoMode {
var resolution = Resolution()
var interlaced = false
var frameRate = 0.0
var name: String?
}
ΠΡΠΈΠΌΠ΅Ρ Π²ΡΡΠ΅ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅Ρ Π½ΠΎΠ²ΡΡ ΡΡΡΡΠΊΡΡΡΡ Resolution Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ½ΠΈΡΠΎΡΠ° Π² ΠΏΠΈΠΊΡΠ΅Π»ΡΡ . ΠΡΠ° ΡΡΡΡΠΊΡΡΡΠ° ΠΈΠΌΠ΅Π΅ΡΒ Π΄Π²Π° ΡΠ²ΠΎΠΉΡΡΠ²Π° width, height. Π₯ΡΠ°Π½ΠΈΠΌΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° — ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°Π½Ρ ΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½Ρ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΊΠ»Π°ΡΡΠ° ΠΈΠ»ΠΈ ΡΡΡΡΠΊΡΡΡΡ. ΠΡΠΈΠΌ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ Π²ΡΠ²Π΅Π΄Π΅Π½ ΡΠΈΠΏ Int, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ ΠΈΠΌ ΠΏΡΠΈΡΠ²ΠΎΠΈΠ»ΠΈ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 0.
Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠ°ΠΊ ΠΆΠ΅ ΠΎΠ±ΡΡΠ²ΠΈΠ»ΠΈ ΠΈ Π½ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ VideoMode, Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π²ΠΈΠ΄Π΅ΠΎΡΠ΅ΠΆΠΈΠΌΠ° Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° Π²ΠΈΠ΄Π΅ΠΎΠ΄ΠΈΡΠΏΠ»Π΅Π΅. Π£ ΠΊΠ»Π°ΡΡΠ° Π΅ΡΡΡ ΡΠ΅ΡΡΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π² Π²ΠΈΠ΄Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ . ΠΠ΅ΡΠ²ΠΎΠ΅ — resolution, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΡΡΡΡΠΊΡΡΡΡ Resolution, ΡΡΠΎ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΈΠΏ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΊΠ°ΠΊ Resolution. ΠΠ»Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΡΠ΅Ρ ΡΠ²ΠΎΠΉΡΡΠ² Π½ΠΎΠ²ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ Ρ interlaced = false, frameRate = 0.0 ΠΈ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΈΠΏΠ° String Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ name. ΠΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ name Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ nil ΠΈΠ»ΠΈ «Π½Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ name», ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΡΠΈΠΏ.
ΠΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΊΠ»Π°ΡΡΠ° ΠΈ ΡΡΡΡΠΊΡΡΡΡ
ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ Resolution ΠΈ ΠΊΠ»Π°ΡΡΠ° VideoMode ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΠΊΠ°ΠΊ Resolution ΠΈ VideoMode Π±ΡΠ΄ΡΡ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ. Π‘Π°ΠΌΠΈ ΠΏΠΎ ΡΠ΅Π±Π΅ ΠΎΠ½ΠΈ Π½Π΅ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π²ΠΈΠ΄Π΅ΠΎΡΠ΅ΠΆΠΈΠΌ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΡΡΡΠΊΡΡΡΡ ΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΡΠ°.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΊΠ»Π°ΡΡΠ° ΠΈΠ»ΠΈ ΡΡΡΡΠΊΡΡΡΡ ΠΎΡΠ΅Π½Ρ ΡΡ ΠΎΠΆ:
let someResolution = Resolution()
let someVideoMode = VideoMode()
Π ΠΊΠ»Π°ΡΡΡ ΠΈ ΡΡΡΡΠΊΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠ° Π΄Π»Ρ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π½ΠΎΠ²ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ². Π‘Π°ΠΌΠ°Ρ ΠΏΡΠΎΡΡΠ°Ρ ΡΠΎΡΠΌΠ° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠ° — ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ ΡΠΈΠΏΠ° ΠΈ ΠΏΡΡΡΡΠ΅ ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ Π½Π΅Π³ΠΎ Resolution(), VideoMode(). ΠΡΠΎ ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° ΠΈΠ»ΠΈ ΡΡΡΡΠΊΡΡΡΡ Ρ Π»ΡΠ±ΡΠΌΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ Ρ ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΡΡΡΡΠΊΡΡΡ ΠΎΠΏΠΈΡΠ°Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Π² Π³Π»Π°Π²Π΅ ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ.
ΠΠΎΡΡΡΠΏ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΎΡΠ΅ΡΠ½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ. Π ΡΠΎΡΠ΅ΡΠ½ΠΎΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ ΠΈΠΌΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΏΠΈΡΠ΅ΡΡΡ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°, Π° ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ Π²ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΠΎΡΠΊΠ° (.) Π±Π΅Π· ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ²:
print("The width of someResolution is \(someResolution.width)")
// ΠΡΠ²Π΅Π΄Π΅Ρ "The width of someResolution is 0"
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ someResolution.width ΡΡΡΠ»Π°Π΅ΡΡΡ Π½Π° ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ width ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° someResolution, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π²Π½ΠΎ 0.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ³Π»ΡΠ±ΠΈΡΡΡΡ Π² ΠΏΠΎΠ΄ΡΠ²ΠΎΠΉΡΡΠ²Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ width ΡΠ²ΠΎΠΉΡΡΠ²Π° resolution ΠΊΠ»Π°ΡΡΠ° VideoMode:
print("The width of someVideoMode is \(someVideoMode.resolution.width)")
// ΠΡΠ²Π΅Π΄Π΅Ρ "The width of someVideoMode is 0"
ΠΡ ΡΠ°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΡΠ΅ΡΠ½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π΄Π»Ρ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Ρ:
someVideoMode.resolution.width = 1280
print("The width of someVideoMode is now \(someVideoMode.resolution.width)")
// ΠΡΠ²Π΅Π΄Π΅Ρ "The width of someVideoMode is now 1280"
ΠΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΡ ΡΡΡΡΠΊΡΡΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ²
ΠΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ ΠΈΠΌΠ΅ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ «ΠΏΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΡΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ», ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ²ΠΎΠΉΡΡΠ² Π½ΠΎΠ²ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΡΡΡΡΠΊΡΡΡΡ. ΠΠ°ΡΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ²ΠΎΠΉΡΡΠ² Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Ρ ΠΏΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΠΎΠΌΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΡ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ:
let vga = Resolution(width: 640, height: 480)
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΡΡΡΠΊΡΡΡ, ΠΊΠ»Π°ΡΡΡ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠ° ΠΈΡΡ ΠΎΠ΄Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½Ρ Π² ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ.
Π’ΠΈΠΏ Π·Π½Π°ΡΠ΅Π½ΠΈΡ — ΡΡΠΎ ΡΠΈΠΏ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΡΠ΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΎ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ΅ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠΎΠΎΠ±ΡΠ΅ Π²Ρ ΡΠΆΠ΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΠΈΠΏΡ Π½Π° ΠΏΡΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ Π³Π»Π°Π². ΠΠΎ ΡΠ°ΠΊΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²ΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΠΈΠΏΡ Swift — ΡΠΈΠΏΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΠΎΠ½ΠΈ ΠΊΠ°ΠΊ ΡΡΡΡΠΊΡΡΡΡ.
ΠΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ ΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ — ΡΠΈΠΏΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² Swift. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Π»ΡΠ±ΠΎΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΡΡΡΠΊΡΡΡΡ ΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅, ΠΈ Π»ΡΠ±ΡΠ΅ ΡΠΈΠΏΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ²ΠΎΠΉΡΡΠ², Π²ΡΠ΅Π³Π΄Π° ΠΊΠΎΠΏΠΈΡΡΡΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΏΠΎ Π²Π°ΡΠ΅ΠΌΡ ΠΊΠΎΠ΄Ρ.
ΠΠ°ΠΌΠ΅ΡΠΊΠ°
ΠΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΌΠ°ΡΡΠΈΠ²Ρ, ΡΠ»ΠΎΠ²Π°ΡΠΈ ΠΈ ΡΡΡΠΎΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π΄Π»Ρ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ Π·Π°ΡΡΠ°Ρ Π½Π° ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠΎΠΏΠΈΡ, ΡΡΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΏΠ°ΠΌΡΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Ρ ΡΠ°Π½ΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ ΠΈ Π»ΡΠ±ΡΠΌΠΈ ΠΊΠΎΠΏΠΈΡΠΌΠΈ. ΠΡΠ»ΠΈ ΠΎΠ΄Π½Π° ΠΈΠ· ΠΊΠΎΠΏΠΈΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π°, ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΊΠΎΠΏΠΈΡΡΡΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΡΡΠΊΡΡΡΡ Resolution ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
let hd = Resolution(width: 1920, height: 1080)
var cinema = hd
ΠΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ hd ΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Resolution, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π΄Π²ΡΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ width ΠΈ height.
Π ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ cinema ΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ Π΅ΠΉ ΡΠ΅ΠΊΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ hd. Π’Π°ΠΊ ΠΊΠ°ΠΊ Resolution — ΡΡΡΡΠΊΡΡΡΠ°, Π΄Π΅Π»Π°Π΅ΡΡΡ ΠΊΠΎΠΏΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°, ΠΈ ΡΡΠ° Π½ΠΎΠ²Π°Ρ ΠΊΠΎΠΏΠΈΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ cinema. ΠΠ°ΠΆΠ΅ Π½Π΅ ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ hd ΠΈ cinema ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ height, width, ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡΡΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°ΠΌΠΈ.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠ°Π³ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° width Ρ cinema, ΠΌΡ ΡΠ΄Π΅Π»Π°Π΅ΠΌ Π΅Π³ΠΎ ΡΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ 2 ΡΡΡΡΡ, ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ Π΄Π»Ρ ΡΠΈΡΡΠΎΠ²ΠΎΠΉ ΠΊΠΈΠ½ΠΎΠΏΡΠΎΠ΅ΠΊΡΠΈΠΈ (2048 ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ ΡΠΈΡΠΈΠ½Ρ Π½Π° 1080 ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ Π²ΡΡΠΎΡΡ):
cinema.width = 2048
ΠΡΠ»ΠΈ ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ width Ρ cinema, ΡΠΎ ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ ΠΎΠ½ΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ Π½Π° 2048:
print("cinema is now \(cinema.width) pixels wide")
// ΠΡΠ²Π΅Π΄Π΅Ρ "cinema is now 2048 pixels wide"
ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ width ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ hd ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΎΡΡΠ°Π»ΠΎΡΡ 1920:
print("hd is still \(hd.width) pixels wide")
// ΠΡΠ²Π΅Π΄Π΅Ρ "hd is still 1920 pixels wide"
ΠΠΎΠ³Π΄Π° ΠΌΡ ΠΏΡΠΈΡΠ²ΠΎΠΈΠ»ΠΈ cinema ΡΠ΅ΠΊΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ hd, ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΡ Π² hd Π±ΡΠ»ΠΈ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½Ρ Π² Π½ΠΎΠ²ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ cinema. Π Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π²Π° ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ ΡΠΈΡΠ»ΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ½ΡΠΌΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°ΠΌΠΈ, ΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° width Ρ cinema Π½Π° 2048 Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΏΠΎΠ²Π»ΠΈΡΠ΅Ρ Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ width Ρ hd, ΡΡΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:
Π’ΠΎ ΠΆΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ ΠΊ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡΠΌ:
enum CompassPoint {
case north, south, east, west
mutating func turnNorth() {
self = .north
}
}
var currentDirection = CompassPoint.west
let rememberedDirection = currentDirection
currentDirection.turnNorth()
print("Π’Π΅ΠΊΡΡΠ΅Π΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ - \(currentDirection)")
// ΠΡΠ²Π΅Π΄Π΅Ρ "Π’Π΅ΠΊΡΡΠ΅Π΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ - north"
ΠΠΎΠ³Π΄Π° ΠΌΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ rememberedDirection Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ currentDirection, ΠΌΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ·ΠΌΠ΅Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ currentDirection, ΠΌΡ Π½Π΅ ΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΊΠΎΠΏΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Ρ ΡΠ°Π½ΡΡΠ΅ΠΉΡΡ Π² rememberedDirection.
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΠΈΠΏΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΡΡΡΠ»ΠΎΡΠ½ΡΠΉ ΡΠΈΠΏ Π½Π΅ ΠΊΠΎΠΏΠΈΡΡΠ΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° Π΅Π³ΠΎ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ΅, ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° Π΅Π³ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΡΠ»ΠΊΠ° Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠ° VideoMode, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΠΎΠ±ΡΡΠ²Π»Π΅Π½ Π²ΡΡΠ΅:
let tenEighty = VideoMode()
tenEighty.resolution = hd
tenEighty.interlaced = true
tenEighty.name = "1080i"
tenEighty.frameRate = 25.0
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΠΌ Π½ΠΎΠ²ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ tenEighty ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΡΡΠ»ΠΊΡ Π½Π° Π½ΠΎΠ²ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° VideoMode. ΠΠ½Π°ΡΠ΅Π½ΠΈΡ Π²ΠΈΠ΄Π΅ΠΎΡΠ΅ΠΆΠΈΠΌΠ° Π±ΡΠ»ΠΈ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½Ρ ΠΊΠΎΠΏΠΈΠ΅ΠΉ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ 1920 Π½Π° 1080. ΠΡ ΡΡΠ°Π²ΠΈΠΌ tenEighty.interlaced = true ΠΈ Π΄Π°Π΅ΠΌ ΠΈΠΌΡ β1080iβ. ΠΠ°ΡΠ΅ΠΌ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ°ΡΡΠΎΡΡ ΠΊΠ°Π΄ΡΠΎΠ² Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ 25 .
Π‘Π»Π΅Π΄ΡΡΡΠ΅Π΅, ΡΡΠΎ ΠΌΡ ΡΠ΄Π΅Π»Π°Π΅ΠΌ, ΡΡΠΎ tenEighty ΠΏΡΠΈΡΠ²ΠΎΠΈΠΌ Π½ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ΅ alsoTenEighty ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ ΡΠ°ΡΡΠΎΡΡ ΠΊΠ°Π΄ΡΠΎΠ²:
let alsoTenEighty = tenEighty
alsoTenEighty.frameRate = 30.0
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎ ΠΊΠ»Π°ΡΡΡ ΡΡΡΠ»ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΡΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ tenEighty ΠΈ alsoTenEighty ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ VideoMode. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ, ΡΡΠΎ Ρ Π½Π°Ρ Π΄Π²Π° ΡΠ°Π·Π½ΡΡ ΠΈΠΌΠ΅Π½ΠΈ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅ Π½ΠΈΠΆΠ΅:
ΠΡΠ»ΠΈ ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ frameRate Ρ tenEighty, ΡΠΎ ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ Π½ΠΎΠ²Π°Ρ ΡΠ°ΡΡΠΎΡΠ° ΠΊΠ°Π΄ΡΠΎΠ² 30.0, ΠΊΠΎΡΠΎΡΠ°Ρ Π±Π΅ΡΠ΅ΡΡΡ Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° VideoMode:
print("The frameRate property of tenEighty is now \(tenEighty.frameRate)")
// ΠΡΠ²Π΅Π΄Π΅Ρ "The frameRate property of tenEighty is now 30.0"
ΠΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΊΠ°ΠΊ ΡΠ»ΠΎΠΆΠ½ΠΎ Π±ΡΠ²Π°Π΅Ρ ΠΎΡΡΠ»Π΅Π΄ΠΈΡΡ Π·Π° ΡΡΡΠ»ΠΎΡΠ½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ. ΠΡΠ»ΠΈ tenEighty ΠΈ alsoTenEighty Π½Π°Ρ ΠΎΠ΄ΠΈΠ»ΠΈΡΡ Π±Ρ Π² ΡΠ°Π·Π½ΡΡ ΡΠ³ΠΎΠ»ΠΊΠ°Ρ Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΡΠ»ΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π²ΡΠ΅ ΠΌΠ΅ΡΡΠ°, Π³Π΄Π΅ ΠΌΡ ΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠ΅ΠΆΠΈΠΌ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ Π²ΠΈΠ΄Π΅ΠΎ. ΠΠ΄Π΅ Π±Ρ Π²Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ tenEighty, Π²Π°ΠΌ ΡΠ°ΠΊ ΠΆΠ΅ Π±Ρ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ Π΄ΡΠΌΠ°ΡΡ ΠΈ ΠΎ alsoTenEighty, ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΡΡΠ»ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, Ρ ΡΠΈΠΏΠ°ΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π΅Π»Π° ΠΎΠ±ΡΡΠΎΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΠ΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π²Π΅ΡΡ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ, Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΡΡΠ΄ΠΎΠΌ, Π² Π²Π°ΡΠ΅ΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ tenEighty ΠΈ alsoTenEighty ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, Π° Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ Π²Ρ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΌΠ΅Π½ΡΡΡ tenEighty.frameRate ΠΈ alsoTenEighty.frameRate, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ tenEighty ΠΈ alsoTenEighty ΡΠ°ΠΌΠΈ ΠΏΠΎ ΡΠ΅Π±Π΅ Π½Π΅ ΠΌΠ΅Π½ΡΡΡΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π½Π΅ Β«ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΒ» Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° VideoMode, Π° Π½Π°ΠΏΡΠΎΡΠΈΠ², ΠΎΠ½ΠΈ Π»ΠΈΡΡ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° Π½Π΅Π³ΠΎ. ΠΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ frameRate Π»Π΅ΠΆΠ°ΡΠ΅Π³ΠΎ Π² ΠΎΡΠ½ΠΎΠ²Π΅ VideoMode, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ, Π° Π½Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΡΡΡΠ»Π°ΡΡΠ΅ΠΉΡΡ Π½Π° VideoMode.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΡΠΎΠΆΠ΄Π΅ΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠ»Π°ΡΡΡ ΡΠ²Π»ΡΡΡΡΡ ΡΡΡΠ»ΠΎΡΠ½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ, ΡΠΎ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΡΠ»Π°Π»ΠΈΡΡ Π½Π° ΠΎΠ΄ΠΈΠ½ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ°. (Π’Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ ΠΊ ΡΡΡΡΠΊΡΡΡΠ°ΠΌ ΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡΠΌ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΊΠΎΠΏΠΈΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°ΠΌ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡΠΌ.)
ΠΠ½ΠΎΠ³Π΄Π° Π±ΡΠ²Π°Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π²ΡΡΡΠ½ΠΈΡΡ ΡΡΡΠ»Π°ΡΡΡΡ Π»ΠΈ Π΄Π²Π΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ°. ΠΠ»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΡΠΎΠ³ΠΎ Π² Swift Π΅ΡΡΡ Π΄Π²Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΡΠΎΠΆΠ΄Π΅ΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ:
- ΠΠ΄Π΅Π½ΡΠΈΡΠ΅Π½ (===)
- ΠΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ΅Π½ ( !== )
ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΎΠ³ΠΎ, ΡΡΡΠ»Π°ΡΡΡΡ Π»ΠΈ Π΄Π²Π΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ:
if tenEighty === alsoTenEighty {
print("tenEighty and alsoTenEighty refer to the same VideoMode instance.")
}
// ΠΡΠ²Π΅Π΄Π΅Ρ "tenEighty and alsoTenEighty refer to the same VideoMode instance."
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Β«ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΡΡΡΒ» (Π² Π²ΠΈΠ΄Π΅ ΡΡΠ΅Ρ Π·Π½Π°ΠΊΠΎΠ² ΡΠ°Π²Π΅Π½ΡΡΠ²Π°, ΠΈΠ»ΠΈ ===) Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π² Π²ΠΈΠ΄Ρ Β«ΡΠ°Π²Π΅Π½ΡΡΠ²ΠΎΒ» (Π² Π²ΠΈΠ΄Π΅ Π΄Π²ΡΡ Π·Π½Π°ΠΊΠΎΠ² ΡΠ°Π²Π΅Π½ΡΡΠ²Π°, ΠΈΠ»ΠΈ ==). ΠΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΡΡΡ ΠΈΠ»ΠΈ ΡΠΎΠΆΠ΄Π΅ΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Π΄Π²Π΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ°. Π Π°Π²Π΅Π½ΡΡΠ²ΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΡΠ°Π²Π½Ρ ΠΈΠ»ΠΈ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Ρ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ Π² ΡΠ°ΠΌΠΎΠΌ ΠΎΠ±ΡΡΠ½ΠΎΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ Β«ΡΠ°Π²Π½ΡΒ».
ΠΠΎΠ³Π΄Π° Π²Ρ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΡΠ΅ ΡΠ²ΠΎΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠ»Π°ΡΡ ΠΈΠ»ΠΈ ΡΡΡΡΠΊΡΡΡΡ, Π²Ρ ΡΠ°ΠΌΠΈ ΡΠ΅ΡΠ°Π΅ΡΠ΅, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ «ΡΠ°Π²Π΅Π½ΡΡΠ²ΠΎ» Π΄Π²ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ². ΠΡΠΎΡΠ΅ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ²ΠΎΠ΅ΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² «ΡΠ°Π²Π΅Π½ΡΡΠ²Π°» ΠΈΠ»ΠΈ «Π½Π΅ΡΠ°Π²Π΅Π½ΡΡΠ²Π°» ΠΎΠΏΠΈΡΠ°Π½ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎΡΡΠΈ.
Π£ΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΎΠΏΡΡ ΡΠ°Π±ΠΎΡΡ Π² C, C++ ΠΈΠ»ΠΈ Objective-C, ΡΠΎ Π²Ρ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ, Π·Π½Π°Π΅ΡΠ΅, ΡΡΠΎ ΡΡΠΈ ΡΠ·ΡΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π΄Π»Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π°Π΄ΡΠ΅Ρ ΠΏΠ°ΠΌΡΡΠΈ. Π Swift ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΡΡΡΠ»ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌ C, Π½ΠΎΒ ΡΡΠΎ Π½Π΅ ΠΏΡΡΠΌΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π½Π° Π°Π΄ΡΠ΅Ρ ΠΏΠ°ΠΌΡΡΠΈ, ΠΈ ΠΎΠ½ΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΡΡ ΠΎΡ Π²Π°Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π·Π²Π΅Π·Π΄ΠΎΡΠΊΠΈ(*) Π΄Π»Ρ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΈΠΈ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ ΡΡΡΠ»ΠΊΡ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΊΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ ΠΎΠ±ΡΡΠ²Π»ΡΡΡΡΡ ΠΊΠ°ΠΊ Π΄ΡΡΠ³ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π² Swift. Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΈΠΏΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ Π±ΡΡΠ΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΏΡΡΠΌΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌΠΈ — ΡΠΌ. Β«Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΡΡ Π²ΡΡΡΠ½ΡΡΒ».
ΠΡΠ»ΠΈ Π²Ρ Π½Π°ΡΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΡ, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π²ΡΠ΄Π΅Π»ΠΈΡΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΡΠ΅ΠΊΡΡΠ° ΠΈ Π½Π°ΠΆΠΌΠΈΡΠ΅ Ctrl+Enter.
C ΡΡΡΡΠΊΡΡΡΠ° Π² ΡΡΡΡΠΊΡΡΡΠ΅ — ΠΡΠ±-ΡΠΏΠ°ΡΠ³Π°Π»ΠΊΠ° Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΏΡΠ΅Π΄ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΠ΅Π»Π΅ΠΉ!
ΠΠ°ΠΊ Π²Π°ΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, ΠΊΠ»Π°ΡΡΡ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ ΡΡΡΠ»ΠΎΡΠ½ΡΠΌ ΡΠΈΠΏΠ°ΠΌ Π΄Π°Π½Π½ΡΡ . ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΡΠΎΡΡΡΡ ΡΠΈΠΏΠΎΠ², Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ. ΠΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡΡΠΌΠΎΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ ΠΊΠ°ΠΊ ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ ΠΏΡΠΎΡΡΡΡ ΡΠΈΠΏΠΎΠ² ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈΠΌΠ΅ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°Π΄ΠΈ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ΅Π΄Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ (Π΄Π°ΠΆΠ΅ ΡΠ°ΠΌΡΠΌ ΠΌΠ΅Π»ΠΊΠΈΠΌ) ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ ΡΠ²ΡΠ·Π°Π½ Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΠΈΠ·Π΄Π΅ΡΠΆΠΊΠ°ΠΌΠΈ Π½Π° ΡΠ°ΡΡ ΠΎΠ΄ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ.
ΠΠ»Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ Π·Π°ΡΡΡΠ΄Π½Π΅Π½ΠΈΠΉ Π² C# ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π° ΡΡΡΡΠΊΡΡΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½Π° ΠΊΠ»Π°ΡΡΡ, Π½ΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΠΈΠΏΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π° Π½Π΅ ΠΊ ΡΡΡΠ»ΠΎΡΠ½ΠΎΠΌΡ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ . Π’.Π΅. ΡΡΡΡΠΊΡΡΡΡ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΠΊΠ°ΠΊ ΠΊ Π½ΠΈΠΌ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΡΡΡΠΏ (ΠΊΠ»Π°ΡΡΡ β ΡΡΠΎ ΡΡΡΠ»ΠΎΡΠ½ΡΠ΅ ΡΠΈΠΏΡ, ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅ΠΌΡΠ΅ Π² ΠΊΡΡΠ΅, ΡΡΡΡΠΊΡΡΡΡ β ΡΠΈΠΏΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅ΠΌΡΠ΅ Π² ΡΡΠ΅ΠΊΠ΅), Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΡΡΠΊΡΡΡΡ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅). ΠΠ· ΡΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π΄Π»Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ . ΠΠ΄Π½Π°ΠΊΠΎ Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΡΡΡΡΠΊΡΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠΈ Π½Π° ΠΊΠ»Π°ΡΡΡ.
ΠΠ»Π°Π²Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΡΠΈ ΠΈΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ struct Π²ΠΌΠ΅ΡΡΠΎ class. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° ΠΎΠ±ΡΠ°Ρ ΡΠΎΡΠΌΠ° ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΡΡΡΠΊΡΡΡΡ:
Π³Π΄Π΅ ΠΈΠΌΡ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ΅ ΠΈΠΌΡ ΡΡΡΡΠΊΡΡΡΡ.
ΠΠ°ΠΊ ΠΈ Ρ ΠΊΠ»Π°ΡΡΠΎΠ², Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ ΠΈΠΌΠ΅ΡΡΡΡ ΡΠ²ΠΎΠΈ ΡΠ»Π΅Π½Ρ: ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΏΠΎΠ»Ρ, ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΎΡΡ, ΡΠ²ΠΎΠΉΡΡΠ²Π°, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ ΡΠΎΠ±ΡΡΠΈΡ. Π ΡΡΡΡΠΊΡΡΡΠ°Ρ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ, Π½ΠΎ Π½Π΅ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΡ. Π ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ Π΄Π»Ρ ΡΡΡΡΠΊΡΡΡΡ Π½Π΅Π»ΡΠ·Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (Ρ.Π΅. ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π±Π΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²). ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΡΡΡΠΊΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈ Π½Π΅ ΠΏΠΎΠ΄Π»Π΅ΠΆΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ. Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΏΠΎΠ»Ρ ΡΡΡΡΠΊΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡΠΌΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. Π ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΡΡΠΊΡΡΡΡ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠΎ ΠΈΡ ΡΠ»Π΅Π½Ρ Π½Π΅Π»ΡΠ·Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΊΠ°ΠΊ abstract, virtual ΠΈΠ»ΠΈ protected.
ΠΠ±ΡΠ΅ΠΊΡ ΡΡΡΡΠΊΡΡΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° new ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ°, Π½ΠΎ Π² ΡΡΠΎΠΌ Π½Π΅Ρ ΠΎΡΠΎΠ±ΠΎΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ. ΠΠ΅Π΄Ρ ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ new, ΡΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. Π ΠΊΠΎΠ³Π΄Π° ΡΡΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ, Ρ ΠΎΡΡ ΠΈ Π½Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π»ΡΠ±ΡΡ ΡΠ»Π΅Π½ΠΎΠ² ΡΡΡΡΠΊΡΡΡΡ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π²ΡΡΡΠ½ΡΡ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΡΠΊΡΡΡ:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄Π½Π° ΡΡΡΡΠΊΡΡΡΠ° ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ Π΄ΡΡΠ³ΠΎΠΉ, ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΊΠΎΠΏΠΈΡ Π΅Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. Π ΡΡΠΎΠΌ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π³Π»Π°Π²Π½ΡΡ ΠΎΡΠ»ΠΈΡΠΈΠΉ ΡΡΡΡΠΊΡΡΡΡ ΠΎΡ ΠΊΠ»Π°ΡΡΠ°. ΠΠΎΠ³Π΄Π° ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΊΠ»Π°ΡΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ ΡΡΡΠ»ΠΊΠ΅ Π½Π° Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠ»Π°ΡΡ, Π² ΠΈΡΠΎΠ³Π΅ ΡΡΡΠ»ΠΊΠ° Π² Π»Π΅Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠΎΡ ΠΆΠ΅ ΡΠ°ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΡΡΠΎ ΠΈ ΡΡΡΠ»ΠΊΠ° Π² ΠΏΡΠ°Π²ΠΎΠΉ Π΅Π³ΠΎ ΡΠ°ΡΡΠΈ. Π ΠΊΠΎΠ³Π΄Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ, ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΊΠΎΠΏΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΡΡΡΠΊΡΡΡΡ ΠΈΠ· ΠΏΡΠ°Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ.
ΠΠΎΡΡΠΎΠΌΡ, Π΅ΡΠ»ΠΈ Π±Ρ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ ΠΊΠ»Π°ΡΡ UserInfo Π²ΠΌΠ΅ΡΡΠΎ ΡΡΡΡΠΊΡΡΡΡ, ΠΏΠΎΠ»ΡΡΠΈΠ»ΡΡ Π±Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡ
Π ΡΠ²ΡΠ·ΠΈ Ρ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½ΡΠΌ Π²ΡΡΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΡΠ΅Π·ΠΎΠ½Π½ΡΠΉ Π²ΠΎΠΏΡΠΎΡ: Π·Π°ΡΠ΅ΠΌ Π² C# Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΡΡΡΡΠΊΡΡΡΠ°, Π΅ΡΠ»ΠΈ ΠΎΠ½Π° ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠΊΡΠΎΠΌΠ½ΡΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ, ΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡ? ΠΡΠ²Π΅Ρ Π½Π° ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. Π‘ΡΡΡΠΊΡΡΡΡ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ ΡΠΈΠΏΠ°ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ, Π° Π½Π΅ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΡΡΡΠΊΡΡΡΠΎΠΉ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΡΡΠ»ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, Π° ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π² ΡΡΠ΄Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ.
ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΡΠ°Π±ΠΎΡΠ° ΡΠΎ ΡΡΡΡΠΊΡΡΡΠΎΠΉ Π½Π΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΡ ΡΠ΄ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΡΡΠΎΠ»Ρ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΊΠ»Π°ΡΡΠ°. ΠΠ΅Π΄Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΡΡΡΠΊΡΡΡΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ, Π° ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ β ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠ»Π°ΡΡΡ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ Π΄Π°Π½Π½ΡΠΌ ΡΡΡΠ»ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. ΠΠΎΡΠ²Π΅Π½Π½ΡΠΉ Ρ Π°ΡΠ°ΠΊΡΠ΅Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈΠ·Π΄Π΅ΡΠΆΠΊΠΈ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ² Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°ΠΊΠΎΠΉ Π΄ΠΎΡΡΡΠΏ, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΡΡΡΡΠΊΡΡΡΠ°ΠΌ Π½Π΅ Π²Π»Π΅ΡΠ΅Ρ Π·Π° ΡΠΎΠ±ΠΎΠΉ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΈΠ·Π΄Π΅ΡΠΆΠΊΠΈ. Π Π²ΠΎΠΎΠ±ΡΠ΅, Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π³ΡΡΠΏΠΏΡ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Π΄Π°Π½Π½ΡΡ , Π½Π΅ ΡΡΠ΅Π±ΡΡΡΠΈΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅, ΡΠΎ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π΄Π»Ρ Π½ΠΈΡ Π»ΡΡΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ ΡΡΡΡΠΊΡΡΡΡ.
ΠΡΠ±ΠΎΠΏΡΡΠ½ΠΎ, ΡΡΠΎ Π² Π‘++ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅ΡΡΡΡ ΡΡΡΡΠΊΡΡΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ struct. ΠΠΎ ΡΡΠΈ ΡΡΡΡΠΊΡΡΡΡ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΡΠ΅Ρ , ΡΡΠΎ ΠΈΠΌΠ΅ΡΡΡΡ Π² C#. Π’Π°ΠΊ, Π² Π‘++ ΡΡΡΡΠΊΡΡΡΠ° ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΠΈΠΏΡ ΠΊΠ»Π°ΡΡΠ°, Π° Π·Π½Π°ΡΠΈΡ, ΡΡΡΡΠΊΡΡΡΠ° ΠΈ ΠΊΠ»Π°ΡΡ Π² ΡΡΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°Π²Π½ΠΎΡΠ΅Π½Π½Ρ ΠΈ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π° Π»ΠΈΡΡ Π΄ΠΎΡΡΡΠΏΠΎΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΊ ΠΈΡ ΡΠ»Π΅Π½Π°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π·Π°ΠΊΡΡΡΡΠΌΠΈ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠ° ΠΈ ΠΎΡΠΊΡΡΡΡΠΌΠΈ Π΄Π»Ρ ΡΡΡΡΠΊΡΡΡΡ. Π Π² C# ΡΡΡΡΠΊΡΡΡΠ° ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΠΈΠΏΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΊΠ»Π°ΡΡ β ΠΊ ΡΡΡΠ»ΠΎΡΠ½ΠΎΠΌΡ ΡΠΈΠΏΡ.
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΠΈΡ Π²ΠΎΠΊΡΡΠ³ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ. Π‘Π°ΠΌΡΠΌ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΈΠ· Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ Π½ΡΠΌ, ΠΊΠ°ΠΊ ΠΎ Π½Π°Π±ΠΎΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π΅ΡΡΡ ΡΠ²ΠΎΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ° ΡΡΠΎ Π²ΠΎΠ·ΡΠ°ΡΡ, ΠΏΠΎΠ», ΡΠΎΡΡ, Π²Π΅Ρ ΠΈ Ρ.Π΄. ΠΠ»Ρ Π²Π΅Π»ΠΎΡΠΈΠΏΠ΅Π΄Π° β ΡΠΈΠΏ, ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΠ»ΡΡ, Π²Π΅Ρ, ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π», ΠΈΠ·Π³ΠΎΡΠΎΠ²ΠΈΡΠ΅Π»Ρ ΠΈ ΠΏΡ. ΠΠ»Ρ ΡΠΎΠ²Π°ΡΠ° Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½Π΅ β ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ Π½ΠΎΠΌΠ΅Ρ, Π½Π°Π·Π²Π°Π½ΠΈΠ΅, Π³ΡΡΠΏΠΏΠ°, Π²Π΅Ρ, ΡΠ΅Π½Π°, ΡΠΊΠΈΠ΄ΠΊΠ° ΠΈ Ρ.Π΄.
Π£ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π½Π°Π±ΠΎΡ ΡΡΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ² ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ: Π²ΡΠ΅ ΡΠΎΠ±Π°ΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½Ρ, Ρ ΡΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΡΠΎΡΠ½ΠΎΡΡΡΡ, ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ ΡΠ²ΠΎΠΉΡΡΠ², Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ² Π±ΡΠ΄ΡΡ ΡΠ°Π·Π½ΡΠ΅.
ΠΡΠ΅ ΡΠ°ΠΌΠΎΠ»ΡΡΡ ΠΎΠ±Π»Π°Π΄Π°ΡΡ Π½Π°Π±ΠΎΡΠΎΠΌ ΠΎΠ±ΡΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ² Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΡΠ»ΠΈ ΠΆΠ΅ Π½Π°ΠΌ Π½Π°Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΡΠ½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΡ: ΡΠ°ΠΌΠΎΠ»ΡΡ Π°ΠΌΡΠΈΠ±ΠΈΠΈ, Π±ΠΎΠ΅Π²ΡΠ΅ ΠΈΡΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ, ΠΏΠ°ΡΡΠ°ΠΆΠΈΡΡΠΊΠΈΠ΅ Π»Π°ΠΉΠ½Π΅ΡΡ β ΠΈ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΡΠΆΠ΅ ΡΡΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Ρ ΡΠ°Π½ΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠ°Ρ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊ, Π² ΠΎΠ±ΡΠ΅ΠΌ, ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΡΠ°Π·Π½ΡΡ ΡΠ²ΠΎΠΉΡΡΠ². ΠΡ Π²ΡΠ±Π΅ΡΠ΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ: ΠΏΠΎΠ», ΠΈΠΌΡ, ΡΠ°ΠΌΠΈΠ»ΠΈΡ, Π²ΠΎΠ·ΡΠ°ΡΡ, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ Π½ΠΎΠΌΠ΅Ρ. ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±Ρ ΠΌΠΎΠ³Π»Π° Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠ΄ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ. ΠΠ»Ρ ΡΡΠΈΡ ΡΠ΅Π»Π΅ΠΉ Π² ΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΡΡΡΠΊΡΡΡΡ.
ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΡΡΡΠΊΡΡΡΡ
ΠΠΎΠ»ΡΠΌΠΈ ΡΡΡΡΠΊΡΡΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π»ΡΠ±ΡΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΡΠ΅ ΡΠΈΠΏΡ, ΠΊΡΠΎΠΌΠ΅ ΡΠ°ΠΌΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠΈΠΏΠ°, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΡΡΡΠΊΡΡΡΡ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ°:
Π ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»Π΅ΠΉ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠΈΠΏ, ΡΠΎ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΡ ΡΠ΅ΡΠ΅Π· Π·Π°ΠΏΡΡΡΡ:
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ ΠΎΠ±ΡΡΠ²ΠΈΠ»ΠΈ ΡΡΡΡΠΊΡΡΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ»ΡΠΆΠ΅Π±Π½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° struct. ΠΠΎΡΡΡΠΏ Π΄ΠΎ ΠΏΠΎΠ»Π΅ΠΉ ΡΡΡΡΠΊΡΡΡΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΎΡΠΊΠ°:
Π‘ΡΡΡΠΊΡΡΡΠ°, ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½Π°Ρ Π² Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅, Π²ΠΈΠ΄Π½Π° Π²ΡΠ΅ΠΌ. Π‘ΡΡΡΠΊΡΡΡΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π° Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ:
ΠΠΎΠΆΠ½ΠΎ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΏΡΠΈΠΌΠ΅Ρ: ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠ·ΡΠΊΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΡΡΡΡΠΊΡΡΡΡ ΡΡΠ°Π·Ρ ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ:
Π‘ΡΡΡΠΊΡΡΡΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΉ. Π’ΠΎΠ³Π΄Π° ΠΌΡ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠΌΡ ΡΡΡΡΠΊΡΡΡΡ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ.
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ A. ΠΠ½Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΡΠΊΡΡΡΠΎΠΉ Ρ Π΄Π²ΡΠΌΡ ΠΏΠΎΠ»ΡΠΌΠΈ.
ΠΠ°ΡΠ°Π»ΡΠ½Π°Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΡΡΠΊΡΡΡ
Π‘ΡΡΡΠΊΡΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠ°ΠΊ ΠΌΠ°ΡΡΠΈΠ². ΠΠΎΠ»Ρ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π±ΡΠ΄ΡΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡΡΡ ΠΏΠΎ ΠΏΠΎΡΡΠ΄ΠΊΡ.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ½ΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΡΠΊΡΡΡΡ. ΠΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΉ ΡΡΡΡΠΊΡΡΡΠ΅ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π½Π΅Π»ΡΠ·Ρ.
Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΡΡΠ°Π½Π΄Π°ΡΡ ΡΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»Ρ ΡΡΡΡΠΊΡΡΡΡ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΈΠ½ΡΠ°ΠΊΠΈΡ:
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°
ΠΠΎΠ³Π΄Π° ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π½ΠΎΠ²ΡΡ ΡΡΡΡΠΊΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»ΡΠΆΠ΅Π±Π½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° struct, Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΈΠΌΡΠ½ ΡΡΡΡΠΊΡΡΡ (ΠΎΠ½ΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅Π³ΠΎ Ρ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°ΠΌΠΈ ΠΈΠΌΡΠ½ Π‘++) ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π½ΠΎΠ²ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ. ΠΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π½Π΅ΠΌΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»ΡΠΆΠ΅Π±Π½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ struct. ΠΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠΈΠΏ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»ΡΠΆΠ΅Π±Π½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° typedef. Π’ΠΎΠ³Π΄Π° Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ Π΄Π»Ρ Π½Π°ΡΠ΅ΠΉ ΡΡΡΡΠΊΡΡΡΡ, Π²ΠΈΠ΄ΠΈΠΌΡΠΉ Π² Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅.
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΠΈΠΏΠΎΠΌ Point Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΠΈΡΠ°ΡΡ ΡΠ»ΠΎΠ²ΠΎ struct. ΠΠ²Π° ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π² ΠΎΠ΄Π½ΠΎ
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. ΠΡΠ»ΠΈ ΠΌΡ ΡΠΎΠ·Π΄Π°ΡΠΌ Π½ΠΎΠ²ΡΠΉ ΡΠΈΠΏ-ΡΡΡΡΠΊΡΡΡΡ, ΠΏΠΎΠ»Π΅ΠΌ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΡΠΎΡ ΠΆΠ΅ ΡΠΈΠΏ, ΡΠΎ Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ ΡΠ²Π½ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ»ΡΠΆΠ΅Π±Π½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° struct
Π£ΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π½Π° ΡΡΡΡΠΊΡΡΡΡ
Π£ΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΡΡΡΠΊΡΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ. ΠΡΠ»ΠΈΡΠΈΠ΅ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ ΠΏΠΎΠ»ΡΠΌ ΡΡΡΡΠΊΡΡΡΡ ΡΠ΅ΡΠ΅Π· ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ «ΡΡΡΠ΅Π»ΠΊΠ°» (ΠΌΠΈΠ½ΡΡ + Π±ΠΎΠ»ΡΡΠ΅). ΠΡΠΈΠΌΠ΅Ρ β ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²Π²ΠΎΠ΄ΠΈΡ ΡΠΈΡΠ»ΠΎ β ΡΠ°Π·ΠΌΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. ΠΠΎΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ Π»ΠΎΠ³ΠΈΠ½ ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ. Π’ΡΠ΅ΡΡΠ΅ ΠΏΠΎΠ»Π΅ β ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ β Π·Π°Π΄Π°ΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π²ΡΠ²ΠΎΠ΄ΡΡΡΡ Π½Π° ΡΠΊΡΠ°Π½.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΡΡΡΠΊΡΡΡ: ΠΏΡΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΡΡΡΡΠΊΡΡΡΡ ΠΎΠ½ Π½Π΅ ΡΠ΄Π°Π»ΡΠ΅Ρ ΡΠ²ΠΎΠΈΡ
ΠΏΠΎΠ»Π΅ΠΉ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ½Π°ΡΠ°Π»Π° ΡΠ΄Π°Π»ΡΡΡ ΠΏΠΎΠ»Ρ, ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΡΠ΄Π°Π»ΡΡΡ ΡΠ°ΠΌ ΠΌΠ°ΡΡΠΈΠ².
ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ jsonUser ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΡΡΡΠΊΡΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΏΠΎΠ»Π΅ΠΉ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΡΡΡΠ΅Π»ΠΊΠ°.
Π£ΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΡΡΡΡΠΊΡΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ
ΠΠΎΠ»Ρ ΡΡΡΡΠΊΡΡΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ Π² ΠΏΠ°ΠΌΡΡΠΈ Π΄ΡΡΠ³ Π·Π° Π΄ΡΡΠ³ΠΎΠΌ. Π’ΠΈΠΏ ΠΏΠΎΠ»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ΄Π²ΠΈΠ³ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ»Ρ. ΠΠΌΡ ΠΏΠΎΠ»Ρ β ΡΡΠΎ ΡΠ΄Π²ΠΈΠ³ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π°Π΄ΡΠ΅ΡΠ° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΡΡΠΊΡΡΡΡ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΡΠ°Π²Π΅Π½ ΡΡΠΌΠΌΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² Π΅Ρ ΠΏΠΎΠ»Π΅ΠΉ: ΡΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΏΠΎΠ΄Π³ΠΎΠ½ΡΡΡ Π΄ΠΎ ΡΡΡΠ½ΡΡ Π°Π΄ΡΠ΅ΡΠΎΠ².
ΠΠ΅ΡΠ²Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·ΠΌΠ΅Ρ 6 Π±Π°ΠΉΡ, Π²ΡΠΎΡΠ°Ρ 8 Π±Π°ΠΉΡ, ΡΡΠ΅ΡΡΡ 7 Π±Π°ΠΉΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π° 32-ΡΠ°Π·ΡΡΠ΄Π½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ VC ΡΠ΄Π΅Π»Π°Π΅Ρ ΠΈΡ Π²ΡΠ΅ ΡΡΠΈ ΡΠ°Π²Π½ΡΠΌΠΈ 8 Π±Π°ΠΉΡ. Π‘ΡΠ°Π½Π΄Π°ΡΡ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ ΠΏΠΎΠ»Ρ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ Π΄ΡΡΠ³ Π·Π° Π΄ΡΡΠ³ΠΎΠΌ, Π½ΠΎ Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎ.
ΠΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΡ ΡΡΡΡΠΊΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ. ΠΠΎΠΆΠ½ΠΎ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΡ ΠΏΠΎΠ»Π΅ΠΉ ΡΡΡΡΠΊΡΡΡΡ, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π΅ΠΉ ΠΊΠ»Π°ΡΡΠ°. ΠΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ, Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°. ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΌΡΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΏΡΠ°Π³ΠΌΠ° pack()
Π£ Π½Π΅Ρ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΠ΅ΠΉ, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Ρ. pragma pack(n) ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² Π±Π°ΠΉΡΠ°Ρ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ΅ Π΄Π»Ρ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ. ΠΡΠ»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π½Π΅ Π·Π°Π΄Π°Π½Ρ Π΄Π»Ρ ΠΌΠΎΠ΄ΡΠ»Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ n 8. ΠΠΎΠΏΡΡΡΠΈΠΌΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ 1, 2, 4, 8 ΠΈ 16. ΠΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ, ΠΊΡΠ°ΡΠ½ΠΎΠΌΡ n ΠΈΠ»ΠΈ ΡΡΠΌΠΌΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠ°Ρ ΠΈΠ· ΡΡΠΈΡ Π²Π΅Π»ΠΈΡΠΈΠ½ ΠΌΠ΅Π½ΡΡΠ΅.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ #pragma pack Π½Π΅ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΡΠ΅ΡΡΡ: Π»ΠΎΠ³ΠΈΠΊΠ° ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°Π²ΠΈΡΠΈΡΡ ΠΎΡ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΡΡΠΊΡΡΡΡ (Π΅ΡΠ»ΠΈ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π²Ρ Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΠ΅ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ Π»ΠΎΠΌΠ°Π΅ΡΠ΅ ΡΡΠΆΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΡΠ΅ΡΠΈ).
ΠΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ²
Π‘ΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ ΠΊ Π΄ΡΡΠ³ΠΎΠΉ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΡΡΡΠΊΡΡΡΡ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ ΠΏΠΎΠ»Ρ, ΡΠΎ Π½Π΅Π»ΡΠ·Ρ ΡΠ²Π½ΠΎ ΠΊΠ°ΡΡΠΎΠ²Π°ΡΡ ΠΎΠ΄Π½Ρ ΡΡΡΡΠΊΡΡΡΡ Π΄ΠΎ Π΄ΡΡΠ³ΠΎΠΉ.
ΠΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π½ΠΎ ΡΡΠΎ Ρ Π°ΠΊ, ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·Π±Π΅Π³Π°ΡΡ. ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊ
ΠΡΠΈΠ²Π΅ΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ² ΠΊ ΡΡΡΡΠΊΡΡΡΠ΅ (ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠΌΡ Π΄ΡΡΠ³ΠΎΠΌΡ ΡΠΈΠΏΡ) ΠΏΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ (Ρ
ΠΎΡΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°Ρ
Π΅ΡΡΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ).
ΠΠΎ Π² ΡΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡ.
ΠΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ.
ΠΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ
Π‘ΡΡΡΠΊΡΡΡΠ° ΡΠ°ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ ΡΠ²Π»ΡΡΡΡΡ ΠΏΠΎΠ»Π΅ΠΌ ΡΡΡΡΠΊΡΡΡΡ. ΠΡΠΈΠΌΠ΅Ρ: ΡΡΡΡΠΊΡΡΡΠ° Model β ΠΌΠΎΠ΄Π΅Π»Ρ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Ρ, ΠΈΠΌΠ΅Π΅Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅, Π½ΠΎΠΌΠ΅Ρ, Π³ΠΎΠ΄ Π²ΡΠΏΡΡΠΊΠ° ΠΈ ΠΏΠΎΠ»Π΅ Make, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Ρ ΡΠ°Π½ΠΈΡ Π½ΠΎΠΌΠ΅Ρ ΠΌΠ°ΡΠΊΠΈ ΠΈ Π΅Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅.
ΠΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ. Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
P.S. ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠΎΠΊΠΈ Π½Π΅ ΡΡΠΎΠΈΡ, Π·Π΄Π΅ΡΡ ΡΠ°ΠΊ ΡΠ΄Π΅Π»Π°Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΊΠΎΠ΄.
Π£ΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π½Π° ΠΏΠΎΠ»Ρ ΡΡΡΡΠΊΡΡΡΡ ΠΈ Π½Π° Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ
Π£ΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π½Π° ΠΏΠΎΠ»Ρ ΡΡΡΡΠΊΡΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΡΠ°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ. Π£ΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π½Π° Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΡΡΡΡΠΊΡΡΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π°. ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π΅Π»Π°Π΅ΠΌ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ: «Π΄Π΅Π°Π½ΠΎΠ½ΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅ΠΌ» Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ Π±Π΅Π·ΡΠΌΡΠ½Π½ΡΡ ΡΡΡΡΠΊΡΡΡΡ ΠΈ Π²ΠΎΠ·ΡΠΌΡΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π½Π° ΠΏΠΎΠ»Ρ ΡΡΡΡΠΊΡΡΡΡ Model:
ΠΠ°ΠΊ ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΎΡΡ ΡΠ°Π½Π΅Π΅, Π² ΡΠΈ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Ρ Π΄Π²ΡΡ ΡΡΡΡΠΊΡΡΡ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ ΠΏΠΎΠ»Ρ, Π½ΠΎ ΡΡΡΡΠΊΡΡΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π°, ΡΠΎ ΠΈΡ Π½Π΅Π»ΡΠ·Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠΈΠΏΡ. ΠΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΈΠ·Π±Π°Π²Π»ΡΡΡΡΡ ΠΎΡ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΡΡΡΠΊΡΡΡ, Π΅ΡΠ»ΠΈ Π½Π° Π½ΠΈΡ Π½ΡΠΆΠ½ΠΎ Π²Π·ΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ. ΠΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ Π²Π·ΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΠΈΠΏΠ° char* Π½Π° ΠΏΠΎΠ»Π΅ ΡΡΡΡΠΊΡΡΡΡ, Π½ΠΎ Π½Π΅Ρ Π³Π°ΡΠ°Π½ΡΠΈΠΈ, ΡΡΠΎ ΠΏΠΎΠ»Ρ Π±ΡΠ΄ΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎ.
ΠΡΠΈΠΌΠ΅ΡΡ
1. Π‘ΡΠ΅ΠΊ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΡΡΠΊΡΡΡΡ «Π£Π·Π΅Π»», ΠΊΠΎΡΠΎΡΠ°Ρ Ρ ΡΠ°Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ (Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠΈΠΏΠ° int) ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ·Π΅Π». ΠΡΠΎ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΈ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΠΎΠ΄ ΡΠ·Π΅Π» ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ push ΠΈ pop.
2. Π Π΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ ΡΡΡΡΠΊΡΡΡΡ β ΠΌΠ°ΡΡΠΈΠ², ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ. Π’ΠΈΠΏ ΠΌΠ°ΡΡΠΈΠ²Π° Π·Π°Π΄Π°Π΄ΠΈΠΌ ΠΌΠ°ΠΊΡΠΎΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉ.
3. Π‘ΡΡΡΠΊΡΡΡΠ° ΠΠΈΠ½ΠΈΡ, ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π΄Π²ΡΡ ΡΡΡΡΠΊΡΡΡ ΡΠΎΡΠ΅ΠΊ. ΠΠ»Ρ ΠΊΡΠ°ΡΠΊΠΎΡΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π»ΠΈΠ½ΠΈΠΈ. ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅, ΠΈΠ½Π°ΡΠ΅ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², Π½Π°ΡΠ° Π»ΠΈΠ½ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ. ΠΡΠ»ΠΈ ΡΡΡΡΠΊΡΡΡΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΠ»Π΅ΠΉ, ΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ Π²ΡΠ΅Ρ ΠΏΠΎΠ»Π΅ΠΉ. ΠΠ»ΡΠ±ΠΎΠΊΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π½Π΅ΡΠ²Π½ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ.
4. Π‘ΡΡΡΠΊΡΡΡΠ° ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π½Π΅ΠΉ.
Π‘ΡΡΡΠΊΡΡΡΡ. Π§Π°ΡΡΡ 2. ΠΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ ΡΡΡΡΠΊΡΡΡΡ. ΠΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ. ΠΠ°ΡΡΠΈΠ²Ρ native -ΡΡΡΡΠΊΡΡΡ
ΠΠ°Π½Π½Π°Ρ ΡΠ΅ΠΌΠ° Π±Π°Π·ΠΈΡΡΠ΅ΡΡΡ Π½Π° ΡΠ΅ΠΌΠ°Ρ :
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅
1. ΠΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠ°ΠΌΡΡΡ Π΄Π»Ρ ΡΡΡΡΠΊΡΡΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ? ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ sizeof
ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π² 2 ΡΡΠ°ΠΏΠ°:
- ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΎΠ½Π° ΡΡΡΡΠΊΡΡΡΡ ΠΊΠ°ΠΊ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ . ΠΠ° ΡΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΏΠ°ΠΌΡΡΡ Π½Π΅ Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ. Π€ΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠΌ ΡΡΡΡΠΊΡΡΡΡ;
- ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠΠ° ΡΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅ Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠ°ΠΌΡΡΡ Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ (ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ), ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² ΡΠ°Π±Π»ΠΎΠ½Π΅ ΡΡΡΡΠΊΡΡΡΡ.
ΠΡΠΈΠΌΠ΅Ρ. ΠΡΡΡΡ Π·Π°Π΄Π°Π½ ΡΠ°Π±Π»ΠΎΠ½ native -ΡΡΡΡΠΊΡΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΊΠ½ΠΈΠ³Ρ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅.
ΠΠΎΡΠ»Π΅ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΡ Π½Π΅ Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ.
ΠΡΠ»ΠΈ ΠΎΠΏΠΈΡΠ°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΈΠΏΠ° Book , ΡΠΎΠ³Π΄Π° Π΄Π»Ρ ΡΠ°ΠΊΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠ΄Π΅Π»Π΅Π½Π°.
Π Π°Π·ΠΌΠ΅Ρ ΠΏΠ°ΠΌΡΡΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ B Π±ΡΠ΄Π΅Ρ ΡΠΎΡΡΠ°Π²Π»ΡΡΡ: 70 + 50 + 4 + 4 = 128 Π±Π°ΠΉΡ. ΠΠ»Ρ ΠΏΠΎΠ»Ρ title Π²ΡΠ΄Π΅Π»ΠΈΡΡΡ 70 Π±Π°ΠΉΡ (ΡΠΈΠΏ char Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ 1 Π±Π°ΠΉΡ). ΠΠ»Ρ ΠΏΠΎΠ»Ρ author Π²ΡΠ΄Π΅Π»ΠΈΡΡΡ 50 Π±Π°ΠΉΡ. ΠΠ»Ρ ΠΏΠΎΠ»Ρ year (Π² Win32 ) Π²ΡΠ΄Π΅Π»ΠΈΡΡΡ 4 Π±Π°ΠΉΡΠ° (ΡΠΈΠΏ int ). ΠΠ»Ρ ΠΏΠΎΠ»Ρ price Π²ΡΠ΄Π΅Π»ΠΈΡΡΡ 4 Π±Π°ΠΉΡΠ° (ΡΠΈΠΏ float ).
Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ°Π·ΡΡΠ΄Π½ΠΎΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ° ΡΠΈΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΡΡΠ³ΠΎΠΉ.
ΠΡΠΈΠΌΠ΅Ρ. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΏΠ°ΠΌΡΡΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΡΡΡΠΊΡΡΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
2. ΠΠ°ΠΊΠΈΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΡΡΡΠΊΡΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ ?
Π¨Π°Π±Π»ΠΎΠ½ Π»ΡΠ±ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π±Ρ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ. ΠΡΠ»ΠΈ Π² ΡΡΡΡΠΊΡΡΡΠ΅ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π΄ΡΡΠ³Π°Ρ ΡΡΡΡΠΊΡΡΡΠ½Π°Ρ-ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, ΡΠΎΠ³Π΄Π° Π΄Π»Ρ ΡΡΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΡ Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ ΡΡΡΡΠΊΡΡΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ (ΡΠΌ. ΠΏ.1).
3. ΠΡΠΈΠΌΠ΅Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ native -ΡΡΡΡΠΊΡΡΡΡ
ΠΡΡΡΡ Π·Π°Π΄Π°Π½Ρ Π΄Π²Π° ΡΠ°Π±Π»ΠΎΠ½Π° ΡΡΡΡΠΊΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΡΠ²Π»ΡΡΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ Β«MyStruct.hΒ» :
β ΡΠ°Π±Π»ΠΎΠ½ Point , ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠΉ ΡΠΎΡΠΊΡ Π½Π° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ½ΠΎΠΉ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ:
β ΡΠ°Π±Π»ΠΎΠ½ Triangle , ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠΉ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Π½Π° ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ:
Π ΡΠ°Π±Π»ΠΎΠ½Π΅ Triangle ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΡΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΡΡΡΠΊΡΡΡΡ (ΡΠΎΡΠΊΠΈ) ΡΠΈΠΏΠ° Point .
ΠΠ΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΡΡΡΠΊΡΡΡΠΎΠΉ Triangle .
ΠΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π° strcpy() ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ»Π° ΡΡΡΡΠΊΡΡΡΡ Π½ΡΠΆΠ½ΠΎ Π² Π½Π°ΡΠ°Π»Π΅ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΠΏΠΈΡΠ°ΡΡ:
Π native -ΡΡΡΡΠΊΡΡΡΠ΅
- ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ Π΄ΡΡΠ³ΡΡ native -ΡΡΡΡΠΊΡΡΡΡ;
- ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ value -ΡΡΡΡΠΊΡΡΡΡ;
- Π½Π΅Π»ΡΠ·Ρ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ ref -ΡΡΡΡΠΊΡΡΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½Π° Π΅ΡΡΡ ΡΠΈΠΏΠΎΠΌ-ΡΡΡΠ»ΠΊΠΎΠΉ.
4. ΠΡΠΈΠΌΠ΅Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ ref -ΡΡΡΡΠΊΡΡΡΡ
ΠΡΡΡΡ Π·Π°Π΄Π°Π½ ΡΠ°Π±Π»ΠΎΠ½ ref -ΡΡΡΡΠΊΡΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠΎΡΠΊΡ Π½Π° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ½ΠΎΠΉ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ
ΠΠ΄Π½Π°ΠΊΠΎ, ΡΡΠ° ΡΡΡΡΠΊΡΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π² Π΄ΡΡΠ³ΠΎΠΉ ref -ΡΡΡΡΠΊΡΡΡΠ΅. ΠΡΠΈΠΌΠ΅Ρ
Π ref -ΡΡΡΡΠΊΡΡΡΠ΅:
- ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ Π΄ΡΡΠ³ΡΡ ref -ΡΡΡΡΠΊΡΡΡΡ;
- ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ value -ΡΡΡΡΠΊΡΡΡΡ;
- Π½Π΅Π»ΡΠ·Ρ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ native -ΡΡΡΡΠΊΡΡΡΡ. Π‘ΠΈΡΡΠ΅ΠΌΠ° Π²ΡΠ΄Π°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅: Β«Mixed types are not supportedΒ» (Β«Π‘ΠΌΠ΅ΡΠ°Π½Π½ΡΠ΅ ΡΠΈΠΏΡ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡΒ»).
5. ΠΡΠΈΠΌΠ΅Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ value -ΡΡΡΡΠΊΡΡΡΡ
ΠΡΡΡΡ Π·Π°Π΄Π°Π½Ρ Π΄Π²Π° ΡΠ°Π±Π»ΠΎΠ½Π° value -ΡΡΡΡΠΊΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠΎΡΠΊΡ ( Point_value ) ΠΈ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ ( Triangle_value )
Π ΡΠ°Π±Π»ΠΎΠ½Π΅ value -ΡΡΡΡΠΊΡΡΡΡ:
- ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ Π΄ΡΡΠ³ΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ value -ΡΡΡΡΠΊΡΡΡΡ;
- Π½Π΅Π»ΡΠ·Ρ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ref -ΡΡΡΡΠΊΡΡΡΡ
- Π½Π΅Π»ΡΠ·Ρ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ native -ΡΡΡΡΠΊΡΡΡΡ.
6. ΠΠ°ΠΊ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΌΠ°ΡΡΠΈΠ² ΡΡΡΡΠΊΡΡΡ ( native )? ΠΡΠΈΠΌΠ΅Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
ΠΠ»Ρ native -ΡΡΡΡΠΊΡΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΌ Π΄Π»Ρ C/C++ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ.
ΠΡΡΡΡ Π·Π°Π΄Π°Π½ ΡΠ°Π±Π»ΠΎΠ½ ΡΡΡΡΠΊΡΡΡΡ Point_native , ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠΎΡΠΊΡ Π½Π° ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ.
ΠΡΠΈΠΌΠ΅Ρ 1. ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΡΡΡΠΊΡΡΡ ΠΊΠ°ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
ΠΡΠΈΠΌΠ΅Ρ 2. ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π½Π° native -ΡΡΡΡΠΊΡΡΡΡ.
7. ΠΡΠΈΠΌΠ΅Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° native -ΡΡΡΡΠΊΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΠΏΠΎΠ»Π΅ΠΌ ΡΡΡΡΠΊΡΡΡΡ (Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΌ Π² ΡΡΡΡΠΊΡΡΡΡ)
Π‘ΡΡΡΠΊΡΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΡΡΡΡΠΊΡΡΡ.
ΠΡΡΡΡ Π·Π°Π΄Π°Π½ ΡΠ°Π±Π»ΠΎΠ½ native -ΡΡΡΡΠΊΡΡΡΡ Point_native , ΡΡΠΎ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠΎΡΠΊΡ Π½Π° ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ
ΠΠ°ΡΡΠΈΠ² ΠΈΠ· n ΡΠΎΡΠ΅ΠΊ ( n = 1..10) ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ°Π±Π»ΠΎΠ½Π°:
8. ΠΡΠΈΠΌΠ΅Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π²ΡΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° native -ΡΡΡΡΠΊΡΡΡ
ΠΡΡΡΡ Π·Π°Π΄Π°Π½Π° native -ΡΡΡΡΠΊΡΡΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠΎΡΠΊΡ Π½Π° ΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ.
Π’ΠΎΠ³Π΄Π°, ΡΠ°Π±ΠΎΡΠ° Ρ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΌ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ ΡΠ°ΠΊΠΈΡ ΡΡΡΡΠΊΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 5*10 Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ ΠΊ ΠΏΡΠΎΡΡΠ΅Π½ΠΈΡ
Π‘ΡΡΡΠΊΡΡΡΡ | C++
Π‘ΡΡΡΠΊΡΡΡΡ — ΡΡΠΎ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ , ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠΈΠΉ Π½Π° ΠΊΠ»Π°ΡΡΡ ΠΈ Π½Π° ΠΌΠ°ΡΡΠΈΠ²Ρ. Π‘ΡΡΡΠΊΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΡΠΎΠ±Ρ Ρ ΡΠ°Π½ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, Π½ΠΎ Π² ΠΎΡΠ»ΠΈΡΠΈΠΈ ΠΎΡ ΠΌΠ°ΡΡΠΈΠ²Π°, Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Β ΡΠ°Π·Π½ΡΠ΅Β ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ . Π‘ΡΡΡΠΊΡΡΡΡ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠΎΠ΄ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ.
ΠΠΈΡΡΠΈΠ½Π³ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΡΡΡΠΊΡΡΡΡ:
struct ΠΈΠΌΡ_ΡΡΡΡΠΊΡΡΡΡ
{
ΡΠΈΠΏ_ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ1 ΠΈΠΌΡ_ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ1;
ΡΠΈΠΏ_ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ2 ΠΈΠΌΡ_ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ2;
ΡΠΈΠΏ_ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ3 ΠΈΠΌΡ_ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ3;
….
}; (ΡΠΎΡΠΊΠ° Ρ Π·Π°ΠΏΡΡΠΎΠΉ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Π°!)
| struct ΠΈΠΌΡ_ΡΡΡΡΠΊΡΡΡΡ { ΡΠΈΠΏ_ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ1 ΠΈΠΌΡ_ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ1; ΡΠΈΠΏ_ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ2 ΠΈΠΌΡ_ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ2; ΡΠΈΠΏ_ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ3 ΠΈΠΌΡ_ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ3; …. }; (ΡΠΎΡΠΊΠ° Ρ Π·Π°ΠΏΡΡΠΎΠΉ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Π°!) |
ΠΠ»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΊΠ°ΡΡΠΎΡΠΊΡ Π΄Π»Ρ ΡΡΡΡΠ° ΡΠΎΡΡΠ° Π΄Π΅ΡΠ΅ΠΉ:
struct card // card — ΠΈΠΌΡ ΡΡΡΡΠΊΡΡΡΡ
{ // ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅
string name;
int age;
float hight;
};
| struct card // card — ΠΈΠΌΡ ΡΡΡΡΠΊΡΡΡΡ { // ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ string name; int age; float hight; }; |
ΠΠ°ΠΊ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ ΡΠ°Π½Π΅Π΅, ΡΡΡΡΠΊΡΡΡΠ° — ΡΡΠΎ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ , ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΠΎΠ± ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΡΡΡΠΊΡΡΡΡ card Π½ΡΠΆΠ½ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΠΈ Ρ ΠΏΡΠΎΡΡΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ :
ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΏΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΡΡΡΡΠΊΡΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΡ ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ ΡΠΎΡΠΊΠΎΠΉ Ρ Π·Π°ΠΏΡΡΠΎΠΉ:
struct card
{
…
} Student, teacher, sport;
| struct card { … } Student, teacher, sport; |
ΠΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΏΠΎΠ»Ρ ΡΡΡΡΠΊΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ
ΠΈΠΌΡ_ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°_ΡΡΡΡΠΊΡΡΡΡ.ΠΈΠΌΡ_ΠΏΠΎΠ»Ρ
| ΠΈΠΌΡ_ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°_ΡΡΡΡΠΊΡΡΡΡ.ΠΈΠΌΡ_ΠΏΠΎΠ»Ρ |
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΡΡΡΠΊΡΡΡΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ Π΅Ρ ΠΏΠΎΠ»Ρ:
card Tim;
Tim.name = «Anna»;
Tim.age = 15;
Tim.hight = 156.7;
| card Tim; Tim.name = «Anna»; Tim.age = 15; Tim.hight = 156.7; |
Π₯-101/102, ΠΊΡΡΠ»Π°ΡΡΠ΅ ΡΠ°ΠΊΠ΅ΡΡ
ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ ΡΡΠ°ΡΡΠ½ΠΈΠΊ: Π Π°Π΄ΡΠ³Π°, ΠΠΎΡΡΠ΄Π°ΡΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΠ°ΡΠΈΠ½ΠΎΡΡΡΠΎΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡΠΊΠΎΠ΅ Π±ΡΡΠΎ ΠΈΠΌ. Π.Π―. ΠΠ΅ΡΠ΅Π·Π½ΡΠΊΠ°, ΠΠ
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΊΡΡΠ»Π°ΡΡΡ ΡΠ°ΠΊΠ΅Ρ Π΄Π»Ρ Π·Π°ΠΌΠ΅Π½Ρ Π₯-55 Π² ΡΠΎΡΡΠ°Π²Π΅ Π²ΠΎΠΎΡΡΠΆΠ΅Π½ΠΈΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΠ΅ΡΠΊΠΈΡ Β Π±ΠΎΠΌΠ±Π°ΡΠ΄ΠΈΡΠΎΠ²ΡΠΈΠΊΠΎΠ²-ΡΠ°ΠΊΠ΅ΡΠΎΠ½ΠΎΡΡΠ΅Π² Π½Π°ΡΠ°Π»Π°ΡΡ Π΅ΡΠ΅ Π² ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅ 80-Ρ Π³ΠΎΠ΄ΠΎΠ². ΠΠ΅Π»ΠΈΡΡ ΡΠ°Π±ΠΎΡΡ ΠΊΠ°ΠΊ Π½Π°Π΄ Π³ΠΈΠΏΠ΅ΡΠ·Π²ΡΠΊΠΎΠ²ΡΠΌΠΈ, ΡΠ²Π΅ΡΡ ΡΠΊΠΎΡΠΎΡΡΠ½ΡΠΌΠΈ ΡΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ, ΡΠ°ΠΊ ΠΈ Π½Π°Π΄ ΡΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ΠΉ Π΄Π°Π»ΡΠ½ΠΎΡΡΠΈ, ΡΠ΅ΠΌ Π₯-55. ΠΡΠΎ ΠΏΡΠΈΠ²Π΅Π»ΠΎ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΈΠ»Π°ΠΌΠΈ ΠΠΠ Β«Π Π°Π΄ΡΠ³Π°Β» Π² ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅ 90-Ρ ΡΠ°ΠΊΠ΅ΡΡ Π₯-101. ΠΠ΅ΡΠ²ΡΠ΅ Π±ΡΠΎΡΠΊΠΎΠ²ΡΠ΅ ΠΈΡΠΏΡΡΠ°Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ»ΠΈΡΡ Π² 1995 Π³ΠΎΠ΄Ρ (ΠΏΠΎ Π΄ΡΡΠ³ΠΈΠΌ Π΄Π°Π½Π½ΡΠΌ β Π² 1998). Π Π°ΠΊΠ΅ΡΠ° Π±ΡΠ»Π° ΠΏΡΠΈΠ½ΡΡΠ° Π½Π° Π²ΠΎΠΎΡΡΠΆΠ΅Π½ΠΈΠ΅ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΠ΅ΡΠΊΠΎΠΉ Π°Π²ΠΈΠ°ΡΠΈΠ΅ΠΉ Π ΠΎΡΡΠΈΠΈ Π² 2012 Π³ΠΎΠ΄Ρ. Π Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, ΡΡΠ΄Ρ ΠΏΠΎ ΠΎΠ±ΡΡΠ²ΠΎΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, Π²ΡΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΡΠ΅ΡΠΈΡΠΌΠΈ β Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡΡ ΠΈΡΠΏΡΡΠ°Π½ΠΈΡ ΠΈ Π΄ΠΎΡΠ°Π±ΠΎΡΠΊΠΈ.
Π Π°ΠΊΠ΅ΡΠ° Π²ΡΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π² ΠΎΠ±ΡΡΠ½ΠΎΠΌ (Π₯-101) ΠΈ ΡΠ΄Π΅ΡΠ½ΠΎΠΌ (Π₯-102) ΠΎΡΠ½Π°ΡΠ΅Π½ΠΈΠΈ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ,Β Π₯-102 ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ΠΉ Π΄Π°Π»ΡΠ½ΠΎΡΡΡΡ Π·Π° ΡΡΠ΅Ρ ΠΌΠ΅Π½ΡΡΠ΅ΠΉ ΠΌΠ°ΡΡΡ ΠΈ Π³Π°Π±Π°ΡΠΈΡΠΎΠ² Π±ΠΎΠ΅Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ. Π’Π°ΠΊΠΆΠ΅ Π²Π΅ΡΡΠΌΠ° Π²Π΅ΡΠΎΡΡΠ½Ρ ΠΎΡΠ»ΠΈΡΠΈΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΡ β Ρ ΡΠ΄Π΅ΡΠ½ΠΎΠΉ ΡΠ°ΠΊΠ΅ΡΡ Π½ΠΈΠΆΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΡΠΎΡΠ½ΠΎΡΡΠΈ, Π½ΠΎ Π²ΡΡΠ΅ ΠΊ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΠΎΠΌΠ΅Ρ ΠΎΠ·Π°ΡΠΈΡΠ΅Π½Π½ΠΎΡΡΠΈ.
ΠΡΡΠ»Π°ΡΠ°Ρ ΡΠ°ΠΊΠ΅ΡΠ° Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΡ ΠΈΠΌΠ΅Π΅Ρ ΡΡΠ΄ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ ΠΎΡΠ»ΠΈΡΠΈΠΉ ΠΎΡ Π₯-55. Π ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΡΡΠΎ Π΄Π°Π»ΡΠ½ΠΎΡΡΡ ΠΏΠΎΠ»Π΅ΡΠ°, Π΄ΠΎΡΡΠΈΠ³Π°ΡΡΠ°Ρ 5000β5500 ΠΊΠΌ ΠΏΡΠΈ ΠΏΠΎΠ»Π΅ΡΠ΅ ΠΏΠΎ ΡΠΌΠ΅ΡΠ°Π½Π½ΠΎΠΌΡ ΠΏΡΠΎΡΠΈΠ»Ρ. Π£ Π₯-55 ΠΎΠ½Π° Π² ΡΡ ΠΎΠΆΠ΅ΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ 2000β2500 ΠΊΠΌ (Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π₯-55 Π‘Π Ρ ΡΠ΄Π΅ΡΠ½ΠΎΠΉ ΠΠ§ ΠΈ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠΌΠΈ ΡΠΎΠΏΠ»ΠΈΠ²Π½ΡΠΌΠΈ Π±Π°ΠΊΠ°ΠΌΠΈ β Π΄ΠΎ 3500 ΠΊΠΌ). Π Π°ΡΠΏΠ»Π°ΡΠΎΠΉ ΡΡΠ°Π»Π° ΡΠ²Π΅Π»ΠΈΡΠΈΠ²ΡΠ°ΡΡΡ ΠΌΠ°ΡΡΠ° ΡΠ°ΠΊΠ΅ΡΡ. ΠΡΠΎ ΠΎΠΏΡΠ°Π²Π΄Π°Π½Π½ΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΡΡΠΊ Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ Π·ΠΎΠ½Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΠΠ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ²ΡΡΠ°Π΅Ρ Π²ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΡΡΡ Π½ΠΎΡΠΈΡΠ΅Π»Ρ, Π° Π±ΠΎΠ»ΡΡΠΈΠΉ Π·Π°ΠΏΠ°Ρ ΠΏΠΎ Π΄Π°Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ°ΠΊΠ΅ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠ±ΠΈΡΠ°ΡΡ Π±ΠΎΠ»Π΅Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΡΡΡ ΠΏΠΎΠ»Π΅ΡΠ° ΠΈ ΡΠ°Π½ΡΡΠ΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΡ Π½Π° ΠΏΠΎΠ»Π΅Ρ Π½Π° ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ΠΎ ΠΌΠ°Π»ΡΡ Π²ΡΡΠΎΡΠ°Ρ Ρ ΠΎΠ³ΠΈΠ±Π°Π½ΠΈΠ΅ΠΌ ΡΠ΅Π»ΡΠ΅ΡΠ° ΠΌΠ΅ΡΡΠ½ΠΎΡΡΠΈ β Π±ΠΎΠ»Π΅Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ, Π½ΠΎ ΡΡΠ΅Π±ΡΡΡΠΈΠΉ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΡΠ°ΡΡ ΠΎΠ΄Π° ΡΠΎΠΏΠ»ΠΈΠ²Π°. ΠΡΠ΅ ΠΎΠ΄Π½ΠΈΠΌ ΡΠ°ΠΊΡΠΎΡΠΎΠΌ, ΡΠΏΠΎΡΠΎΠ±ΡΡΠ²ΡΡΡΠΈΠΌ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΡΠ΅Π»ΠΈ, ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΡΠΎΠΊΠΎΠ΅ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π΄ΡΡΠ² ΠΏΠΎΠ½ΠΈΠΆΠ΅Π½ΠΈΡ ΡΠ°Π΄ΠΈΠΎΠ»ΠΎΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ Π·Π°ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ.
ΠΡΠΎΡΡΠΌ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΎΡΠ»ΠΈΡΠΈΠ΅ΠΌ ΠΎΡ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠ΅ Π²ΡΡΠΎΠΊΠΎΠΉ Π΄Π°Π»ΡΠ½ΠΎΡΡΠΈ Ρ Π²ΡΡΠΎΡΠ°ΠΉΡΠ΅ΠΉ ΡΠΎΡΠ½ΠΎΡΡΡΡ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈ ΠΏΠΎ Π΄Π²ΠΈΠΆΡΡΠΈΠΌΡΡ ΡΠ΅Π»ΡΠΌ. ΠΠ°ΡΡΠ΄Ρ Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄ΠΎΠΏΠΎΠ»Π½ΡΡΡΠΈΠΌΠΈ ΠΈΠ½Π΅ΡΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΠΈ ΡΠΏΡΡΠ½ΠΈΠΊΠΎΠ²ΠΎΠΉ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΎΠ½Π½ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ Π½Π° Π₯-101 ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° ΠΎΠΏΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΡΠ°ΠΌΠΎΠ½Π°Π²Π΅Π΄Π΅Π½ΠΈΡ. ΠΠ° ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΡΡΠ°ΡΡΠΊΠ΅ ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π»Π΅Π²ΠΈΠ·ΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Β«Π‘ΠΏΡΡΡΒ», ΡΡΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈ Π΄Π²ΠΈΠΆΡΡΠΈΡ ΡΡ ΡΠ΅Π»Π΅ΠΉ.
ΠΠΎΡΠΈΡΠ΅Π»ΡΠΌΠΈ ΡΠ°ΠΊΠ΅Ρ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π° Π₯-101/102 ΡΠ²Π»ΡΡΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΠΈΠ΅ ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΠ·Π°ΡΠΈΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π±ΠΎΠΌΠ±Π°ΡΠ΄ΠΈΡΠΎΠ²ΡΠΈΠΊΠΈ-ΡΠ°ΠΊΠ΅ΡΠΎΠ½ΠΎΡΡΡΠ’Ρ-95ΠΠ‘ (Π΄ΠΎ 8 Π½Π° Π²Π½Π΅ΡΠ½ΠΈΡ ΡΠ·Π»Π°Ρ ΠΏΠΎΠ΄Π²Π΅ΡΠΊΠΈ) ΠΈ Π’Ρ-160 (Π΄ΠΎ 12 Π½Π° Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ Π±Π°ΡΠ°Π±Π°Π½Π½ΡΡ ΠΏΡΡΠΊΠΎΠ²ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ°Ρ ). ΠΡΡΡ Π½Π΅ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π² ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½Π° ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈ Π½Π° ΡΡΠΎΠ½ΡΠΎΠ²ΡΠ΅ Π±ΠΎΠΌΠ±Π°ΡΠ΄ΠΈΡΠΎΠ²ΡΠΈΠΊΠΈ Π‘Ρ-34, ΠΈ ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π°Π»ΡΠ½ΠΈΠ΅ Π±ΠΎΠΌΠ±Π°ΡΠ΄ΠΈΡΠΎΠ²ΡΠΈΠΊΠΈ Π’Ρ-22Π3.
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ
ΠΠ»ΠΈΠ½Π°, ΠΌ: | 7,45 |
ΠΠΈΠ°ΠΌΠ΅ΡΡ, ΠΌΠΌ | 742 |
Π Π°Π·ΠΌΠ°Ρ ΠΊΡΡΠ»Π°, ΠΌ | 3 |
Π‘ΡΠ°ΡΡΠΎΠ²ΡΠΉ Π²Π΅Ρ, ΠΊΠ³ | 2200β2400 |
ΠΠ°ΡΡΠ° ΠΠ§, ΠΊΠ³ | 400 |
ΠΠ°ΡΡΠ° ΡΠΎΠΏΠ»ΠΈΠ²Π°, ΠΊΠ³: | 1250 |
Π‘ΠΊΠΎΡΠΎΡΡΡ, ΠΌ/c, ΠΊΡΠ΅ΠΉΡΠ΅ΡΡΠΊΠ°Ρ | 190β200 |
Π‘ΠΊΠΎΡΠΎΡΡΡ, ΠΌ/c, ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ | 250β270 |
ΠΠ°Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΡΠΊΠ°, ΠΊΠΌ | Π΄ΠΎ 4500β5500 ΠΏΠΎ ΡΠ°Π·Π½ΡΠΌ Π΄Π°Π½Π½ΡΠΌ |
ΠΡΠΎΡΠΈΠ»Ρ ΠΏΠΎΠ»ΡΡΠ° | ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ |
ΠΡΡΠΎΡΠ° ΠΏΡΠΎΡΠΈΠ»Ρ ΠΏΠΎΠ»ΡΡΠ°, ΠΌ | ΠΎΡ 30β70 Π΄ΠΎ 10 000 |
ΠΠΠ , ΠΊΠ². ΠΌ. | 0,01 |
Π’ΠΈΠΏ ΠΠ‘Π | ΠΎΠΏΡΠΎΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΠΈ + Π’Π |
Π‘ΠΈΠ»ΠΎΠ²Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° | ΠΠ²ΠΈΠ³Π°ΡΠ΅Π»Ρ ΠΠ’Π Π Π’Π ΠΠ-50Π Ρ ΡΡΠ³ΠΎΠΉ 450 ΠΊΠ³Ρ |
Π’ΠΎΡΠ½ΠΎΡΡΡ (ΠΠΠ), ΠΌ | 5-6 |
Π―Π΄Π΅ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΡΠ°ΠΊΠ΅ΡΡ | Π₯-102 (250 ΠΊΡ) |
ΠΠΈΠ΄Π΅ΠΎ
ΠΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Β«ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡΒ» Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π² C
ΠΠ΅Ρ ΠΎΡΠ²Π΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ°Π·Π½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±ΡΠ΄ΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠΈ. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΡΡΠΎΠ±Ρ ΡΠ°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΠΎΡΠΎΠ·Π½Π°Π½Π½ΡΠΉ Π·Π²ΠΎΠ½ΠΎΠΊ, Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΡΡΡΠΏΠΈΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊ. (ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅ΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΏΡΠΎΠΏΡΡΠΊΠ½ΡΡ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ, ΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΡΡ malloc ()
/ free ()
ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π°ΡΡ ΡΡΡΡΠΊΡΡΡΡ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ.)
ΠΡΠ»ΠΈ Π²Ρ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΠ΅ΡΡ ΡΠΎΠ·Π΄Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΎΠ±ΡΠ΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π½Π΅ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠΈΠ»ΠΈΠΉ, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΡΡΠΎΠΈΡΡ Π΅Π΅ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠ½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π»Π° ΠΎΠ±Π°:
void example_init (struct example * p, int x, int y, int z)
— ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΡΡΡΠΊΡΡΡΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ p
. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½ΠΎ Π»ΡΠ±ΡΠΌ, Ρ ΠΊΠΎΠ³ΠΎ Π΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΡΡΠΊΡΡΡΡ
, Π±ΡΠ΄Ρ ΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ, Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠΉ Π² ΠΊΡΡΠ΅ ΠΈΠ»ΠΈ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½Π½ΡΠΉ ΠΈΠ· ΠΏΡΠ»Π°.
void example_destroy (struct example * p)
— ΠΠ΅Π»Π°Π΅Ρ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π΄Π»Ρ Π΄Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΡΡΠΊΡΡΡΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ p
.(Π Π²Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ ΠΏΠ°ΠΌΡΡΡ, Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΡ Π΄Π»Ρ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠ»Π΅Π½Π°
.) ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΎΠ½ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ , Π° Π½Π΅ , p
, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ Π½Π΅ Π·Π½Π°Π΅Ρ, Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π»ΠΈ ΡΡΡΡΠΊΡΡΡΠ° Π² ΠΊΡΡΠ΅ ΠΈΠ»ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΉ Π°Π±ΠΎΠ½Π΅Π½Ρ Π½Π΅ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ, ΡΠ½ΠΎΠ²Π° Π²ΡΠ·ΡΠ²Π°Ρ example_init ()
.
ΠΡΠΈΠΌΠ΅Ρ ΡΡΡΡΠΊΡΡΡΡ * example_new (int x, int y, int z)
— ΠΡΠ΄Π΅Π»ΡΠ΅Ρ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π΄Π»Ρ ΡΡΡΡΠΊΡΡΡΡ Π² ΠΊΡΡΠ΅, Π²ΡΠ·ΡΠ²Π°Π΅Ρ example_init ()
ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ.
void example_del (struct example * p)
— Π²ΡΠ·ΡΠ²Π°Π΅Ρ example_destroy (p)
ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ p
.
ΠΡΠΈ ΡΠ°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ, Π·Π°ΠΊΠ»ΡΡΠ°ΡΡΠ°ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΊΡΠΎ-ΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΠ°ΡΡ ΠΈΠ· Π²ΡΠ·ΠΎΠ²ΠΎΠ² example_init ()
/ example_del ()
ΠΈΠ»ΠΈ example_new ()
/ example_destroy ()
. Π’Π°ΠΊΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, ΠΊΠ°ΠΊ valgrind
ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ free ()
, ΠΌΠΎΠ³ΡΡ ΡΡΡΡΠ°Π½ΠΈΡΡ ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ. ΠΡΡΠ³ΠΎΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ Π·Π°ΠΊΠ»ΡΡΠ°Π»ΡΡ Π±Ρ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΎΡΠ»ΠΎΠΆΠΈΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π³Π΄Π΅-Π½ΠΈΠ±ΡΠ΄Ρ Π² ΡΡΡΡΠΊΡΡΡΠ΅, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π°, ΠΊΠΎΠ³Π΄Π° ΡΡΡΡΠΊΡΡΡΠ° Π±ΡΠ»Π° Π² ΠΊΡΡΠ΅, ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°ΡΡΡΡ, Π΅ΡΠ»ΠΈ ΠΊΡΠΎ-ΡΠΎ ΠΏΠΎΠΉΠ΄Π΅Ρ Π½Π΅ ΡΠ°ΠΊ.( example_del ()
Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠΈΡΡΠΈΡΡ Π±ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ example_destroy ()
.)
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ ΠΈ ΡΠΏΠΈΡΠΊΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² ΡΠ»Π΅Π½ΠΎΠ²
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ — ΡΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½Π°Ρ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½ ΠΊΠ»Π°ΡΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΊΠ»Π°ΡΡΠ°.
Π ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΊΠ»Π°ΡΡΠ° ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² ΡΠ»Π΅Π½ΠΎΠ² ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΡ Π΄Π»Ρ ΠΏΡΡΠΌΡΡ
ΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ
Π±Π°Π· ΠΈ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π΄Π°Π½Π½ΡΡ
.
(ΠΠ΅ ΠΏΡΡΠ°ΡΡ Ρ std :: initializer_list.)
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ. | (Π½Π°ΡΠΈΠ½Π°Ρ Ρ C ++ 20) |
[ΠΏΡΠ°Π²ΠΈΡΡ] Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ ΠΎΠ±ΡΡΠ²Π»ΡΡΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΎΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ-ΡΠ»Π΅Π½ΠΎΠ² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠΎΡΠΌΡ:
ΠΈΠΌΡ ΠΊΠ»Π°ΡΡΠ° ( ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² (Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ) ) except-spec (Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ) attr (Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ) | (1) | ||||||||
ΠΠ΄Π΅ ΠΈΠΌΡ-ΠΊΠ»Π°ΡΡΠ° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π½Π°Π·ΡΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ»Π°ΡΡ (ΠΈΠ»ΠΈ ΡΠ΅ΠΊΡΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π±Π»ΠΎΠ½Π° ΠΊΠ»Π°ΡΡΠ°), ΠΈΠ»ΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΎ Π² ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ ΠΈΠ»ΠΈ Π² ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ Π΄ΡΡΠ³Π°, ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΊΠ²Π°Π»ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΊΠ»Π°ΡΡΠ°.
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌΠΈ, ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Π½ΡΠΌΠΈ Π² decl-ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ΅-seq ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°, ΡΠ²Π»ΡΡΡΡΡ friend
, inline
, constexpr
(Π½Π°ΡΠΈΠ½Π°Ρ Ρ C ++ 11), consteval
(Π½Π°ΡΠΈΠ½Π°Ρ Ρ C ++ 20) ΠΈ ΡΠ²Π½ΡΠΉ
(Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π½Π΅ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ ΡΠΈΠΏ). ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΊΠ²Π°Π»ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ cv- ΠΈ ref ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡΡΡ: ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ° const ΠΈ volatile Π΄Π»Ρ ΡΡΡΠΎΡΡΠ΅Π³ΠΎΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π½Π΅ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ, ΠΏΠΎΠΊΠ° Π½Π΅ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ.
Π’Π΅Π»ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΏΠ΅ΡΠ΅Π΄ ΠΎΡΠΊΡΡΠ²Π°ΡΡΠ΅ΠΉ ΡΠΊΠΎΠ±ΠΊΠΎΠΉ ΡΠΎΡΡΠ°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² ΡΠ»Π΅Π½ΠΎΠ² , ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ Π΄Π²ΠΎΠ΅ΡΠΎΡΠΈΡ :
, Π·Π° ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΡ
Π·Π°ΠΏΡΡΡΠΌΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ²-ΡΠ»Π΅Π½ΠΎΠ², ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ
ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
ΠΊΠ»Π°ΡΡ-ΠΈΠ»ΠΈ-ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ( ΡΠΏΠΈΡΠΎΠΊ-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ (Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ) ) | (1) | ||||||||
ΡΠΏΠΈΡΠΎΠΊ-ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ ΠΊΠ»Π°ΡΡΠ° ΠΈΠ»ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° | (2) | (Π½Π°ΡΠΈΠ½Π°Ρ Ρ C ++ 11) | |||||||
ΠΏΠ°ΠΊΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ... | (3) | (Π½Π°ΡΠΈΠ½Π°Ρ Ρ C ++ 11) | |||||||
ΠΊΠ»Π°ΡΡ ΠΈΠ»ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ | — | Π»ΡΠ±ΠΎΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Π·ΡΠ²Π°Π΅Ρ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ»Π΅Π½ Π΄Π°Π½Π½ΡΡ ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠ΅ ΠΈΠΌΡ ΡΠΈΠΏΠ°, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π°Π·ΡΠ²Π°Π΅Ρ Π»ΠΈΠ±ΠΎ ΡΠ°ΠΌ ΠΊΠ»Π°ΡΡ (Π΄Π»Ρ Π΄Π΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠ²), Π»ΠΈΠ±ΠΎ ΠΏΡΡΠΌΡΡ ΠΈΠ»ΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ Π±Π°Π·Ρ. |
ΡΠΏΠΈΡΠΎΠΊ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ | — | , Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΡΡΡΠΎΠΉ, ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΠΉ Π·Π°ΠΏΡΡΡΠΌΠΈ ΡΠΏΠΈΡΠΎΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ Π±Π°Π·Ρ ΠΈΠ»ΠΈ ΡΠ»Π΅Π½Π° |
ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² ΡΠΈΠ³ΡΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΊΠ°Ρ | — | Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΉ Π² ΡΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ², ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΡ Π·Π°ΠΏΡΡΡΠΌΠΈ, ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΡΠΏΠΈΡΠΊΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² ΡΠΈΠ³ΡΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΊΠ°Ρ |
ΠΏΠ°ΠΊΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² | — | ΠΈΠΌΡ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π²Π°ΡΠΈΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠ°Π±Π»ΠΎΠ½Π° |
struct S { int n; S (ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»); // ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° S (): n (7) {} // ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° // ": n (7)" - ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² // ": n (7) {}" - ΡΠ΅Π»ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ }; S :: S (int x): n {x} {} // ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°: ": n {x}" - ΡΡΠΎ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² int main () { SS; // Π²ΡΠ·ΡΠ²Π°Π΅Ρ S :: S () S s2 (10); // Π²ΡΠ·ΡΠ²Π°Π΅Ρ S :: S (int) }
[ΠΏΡΠ°Π²ΠΈΡΡ] ΠΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΠΈΠΌΠ΅Π½ ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½Ρ Π½Π°ΠΏΡΡΠΌΡΡ.ΠΠ½ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π²ΡΠ±ΠΈΡΠ°ΡΡΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ Π±Π΅Π· ΡΠ²Π½ΠΎΠ³ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°
ΡΠ²Π»ΡΡΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°ΠΌΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ constexpr
Π΄Π΅Π»Π°ΡΡ ΡΠ²ΠΎΠΉ ΡΠΈΠΏ LiteralType. ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ Π±Π΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΡΠ²Π»ΡΡΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°ΠΌΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠΈΠΏΠ°, ΡΡΠΎ ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, ΡΠ²Π»ΡΡΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°ΠΌΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°ΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ.
ΠΠ΅ΡΠ΅Π΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΠΎΡΡΠ°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°, ΠΎΠ±ΡΠ°Π·ΡΡΡΠ΅Π³ΠΎ ΡΠ΅Π»ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π²ΡΠ΅Ρ ΠΏΡΡΠΌΡΡ Π±Π°Π·, Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ Π±Π°Π· ΠΈ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π΄Π°Π½Π½ΡΡ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ.Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² — ΡΡΠΎ ΠΌΠ΅ΡΡΠΎ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΠ»Ρ Π±Π°Π·ΠΎΠ²ΡΡ ΠΈ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΡΡΡΠ»ΠΎΡΠ½ΡΠ΅ ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΠ΅ ΡΠΈΠΏΡ, Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΡ ΡΠ»Π΅Π½ΠΎΠ². ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΡΠ»Π΅Π½ΠΎΠ², Ρ ΠΊΠΎΡΠΎΡΡΡ Π½Π΅Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠ° ΡΠ»Π΅Π½Π°.
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΡ, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΊΠ»Π°ΡΡ ΠΈΠ»ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΈΠΌΠ΅Π½ΡΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ, ΠΈΠ³Π½ΠΎΡΠΈΡΡΡΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
ΠΠΌΠ΅Π½Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π² ΡΠΏΠΈΡΠΊΠ΅-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΡΠΏΠΈΡΠΊΠ΅-ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΠ³ΡΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ, ΠΎΡΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°:
ΠΊΠ»Π°ΡΡ X { int a, b, i, j; ΠΎΠ±ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ: const int & r; X (int Ρ) : r (a) // ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ X :: r Π΄Π»Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° X :: a , b {i} // ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ X :: b Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° i , i (i) // ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ X :: i Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° i , j (this-> i) // ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ X :: j Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ X :: i {} };
ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΠ΅ ΠΈΠ· ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² ΡΠ»Π΅Π½ΠΎΠ², ΠΌΠΎΠ³ΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Π±Π»ΠΎΠΊΠΎΠΌ function-try-block
Π€ΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Ρ (Π²ΠΊΠ»ΡΡΠ°Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Ρ) ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½Ρ ΠΈΠ· ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ, Π΅ΡΠ»ΠΈ Π½Π΅ Π²ΡΠ΅ ΠΏΡΡΠΌΡΠ΅ Π±Π°Π·Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ Π² ΡΡΠΎΠΉ ΡΠΎΡΠΊΠ΅.
ΠΠ»Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² (Π΅ΡΠ»ΠΈ ΠΏΡΡΠΌΡΠ΅ Π±Π°Π·Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ Π² ΡΡΠΎΠΉ ΡΠΎΡΠΊΠ΅) ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΡΠ΅ ΠΆΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°, ΡΡΠΎ ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° Π΄Π»Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΠΈΠ· ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠ² ΠΈ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠΎΠ²: Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Ρ Π²Π΅Π΄ΡΡ ΡΠ΅Π±Ρ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΈΠΏ * ΡΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΈΠΏ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠΉ ΠΊΠ»Π°ΡΡ (Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠ° Π½Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ Π²Π½ΠΈΠ· ΠΏΠΎ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ) ΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ (Π½ΠΎ Π½Π΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²ΡΠ·ΠΎΠ²Ρ) ΡΠΈΡΡΡΠΌ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΌ ΡΡΠ½ΠΊΡΠΈΡΠΌ-ΡΠ»Π΅Π½Π°ΠΌ ΡΠ²Π»ΡΡΡΡΡ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ.
ΠΡΠ»ΠΈ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ»Π΅Π½ Π΄Π°Π½Π½ΡΡ ΠΈΠΌΠ΅Π΅Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ ΡΠ»Π΅Π½Π° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² ΡΠ»Π΅Π½Π°, ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ ΡΠ»Π΅Π½Π°, Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ ΡΠ»Π΅Π½Π° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΡΡ: struct S { int n = 42; // ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ ΡΠ»Π΅Π½Π° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ S (): n (7) {} // ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡ n ΡΠ°Π²Π½ΡΠΌ 7, Π° Π½Π΅ 42 }; | (Π½Π°ΡΠΈΠ½Π°Ρ Ρ C ++ 11) |
Π‘ΡΡΠ»ΠΎΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠΈΠ²ΡΠ·Π°Π½Ρ ΠΊ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²:
struct A { A (): v (42) {} // ΠΡΠΈΠ±ΠΊΠ° const int & v; };
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΡ ΡΠ»Π΅Π½Π° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
ΠΠ΅Π»Π΅Π³ΠΈΡΡΡΡΠΈΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΡΠ»ΠΈ ΠΈΠΌΡ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΊΠ»Π°ΡΡ ΠΈΠ»ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² ΡΠ»Π΅Π½ΠΎΠ², ΡΠΎ ΡΠΏΠΈΡΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΡΡΠΎΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠ° ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»Π΅Π½Π°; ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΊΠ°ΠΊ Π΄Π΅Π»Π΅Π³ΠΈΡΡΡΡΠΈΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ , Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, Π²ΡΠ±ΡΠ°Π½Π½ΡΠΉ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠ»Π΅Π½ΠΎΠΌ ΡΠΏΠΈΡΠΊΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ², ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π»Π΅Π²ΡΠΌ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ ΠΏΡΡΠ΅ΠΌ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ, Π·Π°ΡΠ΅ΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ Π΄Π΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΈ Π΅Π³ΠΎ ΡΠ΅Π»ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ. ΠΠ΅Π»Π΅Π³ΠΈΡΡΡΡΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠΌΠΈ. class Foo { ΠΎΠ±ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ: Foo (char x, int y) {} Foo (int y): Foo ('a', y) {} // Foo (int) Π΄Π΅Π»Π΅Π³ΠΈΡΡΠ΅Ρ Foo (char, int) }; ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠ²Π‘ΠΌ. ΠΠ°ΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ. | (Π½Π°ΡΠΈΠ½Π°Ρ Ρ C ++ 11) |
[ΠΏΡΠ°Π²ΠΈΡΡ] ΠΠΎΡΡΠ΄ΠΎΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ
ΠΠΎΡΡΠ΄ΠΎΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΡΠΏΠΈΡΠΊΠ΅ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ: ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ:
1) ΠΡΠ»ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ Π±Π°Π·Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ Π² ΡΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ΠΈ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ ΠΏΡΠΈ ΠΎΠ±Ρ ΠΎΠ΄Π΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΡΠ»Π΅Π²Π° Π½Π°ΠΏΡΠ°Π²ΠΎ Π² Π³Π»ΡΠ±ΠΈΠ½Ρ (ΡΠ»Π΅Π²Π° Π½Π°ΠΏΡΠ°Π²ΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ Π²Π½Π΅ΡΠ½Π΅ΠΌΡ Π²ΠΈΠ΄Ρ). Π² ΡΠΏΠΈΡΠΊΠ°Ρ Π±Π°Π·ΠΎΠ²ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ²)
2) ΠΠ°ΡΠ΅ΠΌ ΠΏΡΡΠΌΡΠ΅ Π±Π°Π·Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΠ»Π΅Π²Π° Π½Π°ΠΏΡΠ°Π²ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π² ΡΠΏΠΈΡΠΊΠ΅ Π±Π°Π·ΠΎΠ²ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°
3) ΠΠ°ΡΠ΅ΠΌ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠ°.
4) ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ΅Π»ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°
(ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π΅ΡΠ»ΠΈ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅ΡΡΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ Π² ΡΠΏΠΈΡΠΊΠ°Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² ΡΠ»Π΅Π½ΠΎΠ² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠ², ΡΠΎ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΌ ΠΏΠΎΡΡΠ΄ΠΊΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ)
[ΠΏΡΠ°Π²ΠΈΡΡ] ΠΡΠΈΠΌΠ΅Ρ
#include#include <ΡΡΡΠΎΠΊΠ°> #include <ΠΌΡΡΡΠ΅ΠΊΡ> struct Base { int n; }; struct Class: ΠΎΠ±ΡΠ΅Π΄ΠΎΡΡΡΠΏΠ½Π°Ρ Π±Π°Π·Π° { Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» x; Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠΉ char y; std :: mutex m; std :: lock_guard lg; std :: fstream f; std :: string s; ΠΠ»Π°ΡΡ (int x) : Base {123}, // ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ x (x), // x (ΡΠ»Π΅Π½) ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ x (ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ) y {0}, // y ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ 0 f {"test.cc ", std :: ios :: app}, // ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΡΠ»Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ m ΠΈ lg s (__ func__), // __ func__ Π΄ΠΎΡΡΡΠΏΠ΅Π½, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ init-list ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° lg (m), // lg ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ m, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΆΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ m {} // m ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ lg, Ρ ΠΎΡΡ Π·Π΄Π΅ΡΡ ΠΎΠ½ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ {} // ΠΏΡΡΡΠΎΠΉ ΡΠΎΡΡΠ°Π²Π½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΠ»Π°ΡΡ (Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Π°) : Ρ (Π° + 1), x (y), // x Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ ΠΏΠ΅ΡΠ΅Π΄ y, Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π·Π΄Π΅ΡΡ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ lg (ΠΌ) {} // ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ Π² ΡΠΏΠΈΡΠΊΠ΅, ΡΡΠΎ // ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (Π½Π΅ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π°ΡΡ Base (), ΡΠΎ Π΅ΡΡΡ value-init) ΠΠ»Π°ΡΡ() try // Π±Π»ΠΎΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ-try Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅Π»ΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ : ΠΠ»Π°ΡΡ (0.0) // ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π΄Π΅Π»Π΅Π³Π°ΡΠ° { // ... } Π»ΠΎΠ²ΠΈΡΡ (...) { // ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ } }; int main () { ΠΠ»Π°ΡΡ c; ΠΠ»Π°ΡΡ c1 (1); ΠΠ»Π°ΡΡ c2 (0,1); }
[ΠΏΡΠ°Π²ΠΈΡΡ] ΠΡΡΠ΅ΡΡ ΠΎ Π΄Π΅ΡΠ΅ΠΊΡΠ°Ρ
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ Π½ΠΈΠΆΠ΅ ΠΎΡΡΠ΅ΡΡ ΠΎ Π΄Π΅ΡΠ΅ΠΊΡΠ°Ρ , ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΠΈΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Π±ΡΠ»ΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Ρ Π·Π°Π΄Π½ΠΈΠΌ ΡΠΈΡΠ»ΠΎΠΌ ΠΊ ββΡΠ°Π½Π΅Π΅ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΡΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ°ΠΌ C ++.
DR | ΠΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊ | ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ | ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ |
---|---|---|---|
CWG 1696 | C ++ 98 | ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ (Π²ΡΠ΅ΠΌΡ ΠΆΠΈΠ·Π½ΠΈ ΠΊΠΎΡΠΎΡΡΡ Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ ctor) | ΡΠ°ΠΊΠΎΠΉ init Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ |
[ΠΏΡΠ°Π²ΠΈΡΡ] Π‘ΡΡΠ»ΠΊΠΈ
- Π‘ΡΠ°Π½Π΄Π°ΡΡ C ++ 11 (ISO / IEC 14882: 2011):
- 12.1 ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ [class.ctor]
- 12.6.2 ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π±Π°Π· ΠΈ ΡΠ»Π΅Π½ΠΎΠ² [class.base.init]
- Π‘ΡΠ°Π½Π΄Π°ΡΡ C ++ 98 (ISO / IEC 14882: 1998):
- 12.1 ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ [class.ctor]
- 12.6.2 ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π±Π°Π· ΠΈ ΡΠ»Π΅Π½ΠΎΠ² [class.base.init]
[ΠΏΡΠ°Π²ΠΈΡΡ] Π‘ΠΌ. Π’Π°ΠΊΠΆΠ΅
Π‘ΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² ΡΡΡΡΠΊΡΡΡ ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ ΠΈΠ· C — ΡΡΠ΅Π±Π½ΠΈΠΊ
ΠΡΠΎ Π²ΡΠΎΡΠΎΠΉ ΠΏΠΎΡΡ Π² ΡΠ΅ΡΠΈΠΈ.Π‘Π°ΠΌΡΠΌ ΠΏΠ΅ΡΠ²ΡΠΌ ΡΡΠ΅Π±Π½ΡΠΌ ΠΊΡΡΡΠΎΠΌ ΡΡΠΎΠΉ ΡΠ΅ΡΠΈΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π‘ΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΡ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ ΠΈΠ· C. ΠΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΠ· C ΠΈ Mapping Strings ΠΈΠ· ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ² C.
Π ΡΡΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅:
Π‘ΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡ ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ ΡΠΈΠΏΠΎΠ² C
ΠΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ½ΡΡΡ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Kotlin ΠΈ C — ΡΡΠΎ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΊΡΠΎΡΠ΅ΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ. ΠΡ ΠΎΠ±ΡΡΠ²ΠΈΠΌ ΡΡΡΡΠΊΡΡΡΡ ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ·ΡΠΊΠ΅ C, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π² Kotlin.
Kotlin / Native ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ cinterop
, ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ·ΡΠΊΠΎΠΌ C ΠΈ Kotlin.ΠΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ°ΠΉΠ» .def
, ΡΡΠΎΠ±Ρ ΡΠΊΠ°Π·Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ C Π΄Π»Ρ ΠΈΠΌΠΏΠΎΡΡΠ°. ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ±ΡΡΠΆΠ΄Π°Π΅ΡΡΡ Π² ΡΡΠ΅Π±Π½ΠΈΠΊΠ΅ Β«ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ C.
Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ Π²Ρ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΡΠ°ΠΉΠ» lib.h
. ΠΠ° ΡΡΠΎΡ ΡΠ°Π· Π²ΠΊΠ»ΡΡΠΈΡΠ΅ ΡΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² ΡΠ°ΠΉΠ» interop.def
ΠΏΠΎΡΠ»Π΅ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ---
:
—
typedef struct {
int a;
Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Π±;
} MyStruct;
void struct_by_value (MyStruct s) {}
void struct_by_pointer (MyStruct * s) {}
typedef union {
int a;
MyStruct b;
float c;
} MyUnion;
void union_by_value (MyUnion u) {}
void union_by_pointer (MyUnion * u) {}
ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ .def
Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΎΡΠΊΡΡΡΠΈΡ Π΅Π³ΠΎ Π² ΡΡΠ΅Π΄Π΅ IDE. ΠΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΠΉΠ»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΎΡΠΊΡΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡ Π² IntelliJ IDEA ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ Π΅Π³ΠΎ.
ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ API-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Kotlin Π΄Π»Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ C
Π₯ΠΎΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΡΡΡΠΎΠΊΡ Π½Π°ΠΏΡΡΠΌΡΡ ΠΈΠ»ΠΈ ΠΏΡΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π΅Π΅ Ρ ΡΠ°ΠΉΠ»ΠΎΠΌ ΡΡΠ΅Π½Π°ΡΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, .sh
ΠΈΠ»ΠΈ .bat
ΡΠ°ΠΉΠ»ΠΎΠΌ), ΡΡΠΎΡ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΏΠ»ΠΎΡ
ΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΡΡΡ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Ρ ΡΠΎΡΠ½ΡΠΌΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ. Π’ΠΎΠ³Π΄Π° Π»ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Kotlin / Native Ρ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΈ ΠΊΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Kotlin / Native Ρ ΡΡΠ°Π½Π·ΠΈΡΠΈΠ²Π½ΡΠΌΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΈ ΡΠ΅ΡΡΡ.Kotlin / Native ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ Gradle ΡΠ΅ΡΠ΅Π· ΠΏΠ»Π°Π³ΠΈΠ½ kotlin-multiplatform.
ΠΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΠΎΡΠ½ΠΎΠ²Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ IDE-ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Ρ Gradle Π² ΡΡΠ΅Π±Π½ΠΈΠΊΠ΅ A Basic Kotlin / Native Application. ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ Π΅Π³ΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΡΠ΅ΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠ΅ ΠΏΠ΅ΡΠ²ΡΠ΅ ΡΠ°Π³ΠΈ ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π·Π°ΠΏΡΡΡΠΈΡΡ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Kotlin / Native ΠΈ ΠΎΡΠΊΡΡΡΡ Π΅Π³ΠΎ Π² IntelliJ IDEA. Π ΡΡΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ C Π΄Π»Ρ Kotlin / Native ΠΈ ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΡΡ ΡΠ±ΠΎΡΠΎΠΊ Ρ Gradle.
Π‘Π½Π°ΡΠ°Π»Π° ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΏΠ°ΠΏΠΊΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΡΠ΅ ΠΏΡΡΠΈ Π² ΡΡΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ Π±ΡΠ΄ΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΡΡΡ ΠΊ ΡΡΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅. ΠΠ½ΠΎΠ³Π΄Π° Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΠΈΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π½ΠΎΠ²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°ΠΉΠ» ΡΠ±ΠΎΡΠΊΠΈ build.gradle (.kts)
Gradle:
plugins {
ΠΊΠΎΡΠ»ΠΈΠ½ («ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½Π°Ρ») Π²Π΅ΡΡΠΈΡ «1.5.31»
}
ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ {
mavenCentral ()
}
kotlin {
linuxX64 («native») {// Π² Linux
// macosX64 («ΡΠΎΠ΄Π½ΠΎΠΉ») {// Π½Π° x86_64 macOS
// macosArm64 («native») {// Π² Apple Silicon macOS
// mingwX64 («native») {// Π² Windows
val main ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡΠΌΠΈ.ΠΏΠΎΠ»ΡΡΠ°ΡΡΠΈΠΉ
val Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΎΡ main.cinterops.creating
Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ {
ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» ()
}
}
}
tasks.wrapper {
gradleVersion = «6.7.1»
distributionType = Wrapper.DistributionType.BIN
}
ΠΏΠ»Π°Π³ΠΈΠ½Ρ {
id ‘org.jetbrains.kotlin.multiplatform’ Π²Π΅ΡΡΠΈΡ ‘1.5.31’
}
ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ {
mavenCentral ()
}
kotlin {
linuxX64 (‘native’) {// Π² Linux
// macosX64 («ΡΠΎΠ΄Π½ΠΎΠΉ») {// Π½Π° x86_64 macOS
// macosArm64 («native») {// Π² Apple Silicon macOS
// mingwX64 (‘native’) {// Π² Windows
ΡΠ±ΠΎΡΠ½ΠΈΠΊΠΈ.main.cinterops {
Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅
}
Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ {
ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» ()
}
}
}
wrapper {
gradleVersion = ‘6.7.1’
distributionType = ‘BIN’
}
Π€Π°ΠΉΠ» ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ C ΠΊΠ°ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΡΠ°ΠΏ ΡΠ±ΠΎΡΠΊΠΈ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΠΌ ΡΠ°ΠΉΠ» interop.def
Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ src / nativeInterop / cinterop
. Gradle ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΡΡ
ΠΎΠ΄Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ src / nativeMain / kotlin
.ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΈΠ· C ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΡΡΡΡ Π² ΠΏΠ°ΠΊΠ΅Ρ interop
, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π²Π΅ΡΡ ΠΏΠ°ΠΊΠ΅Ρ Π² Π½Π°ΡΠΈ ΡΠ°ΠΉΠ»Ρ .kt
. ΠΠ·Π½Π°ΠΊΠΎΠΌΡΡΠ΅ΡΡ Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ ΠΏΠ»Π°Π³ΠΈΠ½Π° kotlin-multiplatform, ΡΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ ΠΎΠ±ΠΎ Π²ΡΠ΅Ρ
ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΡΠΏΠΎΡΠΎΠ±Π°Ρ
Π΅Π³ΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ.
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ»-Π·Π°Π³Π»ΡΡΠΊΡ src / nativeMain / kotlin / hello.kt
ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ C Π²ΠΈΠ΄Π½Ρ ΠΈΠ· Kotlin:
import interop. *
fun main () {
println («ΠΡΠΈΠ²Π΅Ρ, ΠΠΎΡΠ»ΠΈΠ½ / Π ΠΎΠ΄Π½ΠΎΠΉ!»)
struct_by_value (/ * ΠΈΡΠΏΡΠ°Π²Ρ ΠΌΠ΅Π½Ρ * /)
struct_by_pointer (/ * ΠΈΡΠΏΡΠ°Π²Ρ ΠΌΠ΅Π½Ρ * /)
union_by_value (/ * ΠΈΡΠΏΡΠ°Π²Ρ ΠΌΠ΅Π½Ρ * /)
union_by_pointer (/ * ΠΈΡΠΏΡΠ°Π²Ρ ΠΌΠ΅Π½Ρ * /)
}
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ Π³ΠΎΡΠΎΠ²Ρ ΠΎΡΠΊΡΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡ Π² IntelliJ IDEA ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΊΠ°ΠΊ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°.ΠΡΠΈ ΡΡΠΎΠΌ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅, ΠΊΠ°ΠΊ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠ΅ ΡΠΈΠΏΡ C ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π² Kotlin / Native.
ΠΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠ΅ ΡΠΈΠΏΡ Π² Kotlin
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ IntelliJ IDEA ΠΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ | ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ API Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΉ C, struct
ΠΈ union
:
fun struct_by_value (s: CValue
fun struct_by_pointer (s: CValuesRef
Π²Π΅ΡΠ΅Π»ΠΎ union_by_value (u: CValue
fun union_by_pointer (u: CValuesRef
ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠ»Π°ΡΡΠ° MyStruct (rawPtr: NativePtr / * = NativePtr * /): CStructVar {
var a: Int
var b: Double
ΡΠΎΠΏΡΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ: CStructVar.Π’ΠΈΠΏ
}
ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠ»Π°ΡΡΠ° MyUnion (rawPtr: NativePtr / * = NativePtr * /): CStructVar {
var a: Int
val b: MyStruct
var c: Float
ΡΠΎΠΏΡΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ: CStructVar.Type
}
ΠΡ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎ cinterop
ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π» ΡΠΈΠΏΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ Π΄Π»Ρ Π½Π°ΡΠΈΡ
ΡΠΈΠΏΠΎΠ² struct
ΠΈ union
. ΠΠ»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ ΡΠΈΠΏΠΎΠ² MyStruct
ΠΈ MyUnion
Π² C ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΊΠ»Π°ΡΡΡ Kotlin MyStruct
ΠΈ MyUnion
ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. ΠΠ±ΠΎΠ»ΠΎΡΠΊΠΈ Π½Π°ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΎΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° CStructVar
ΠΈ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ Π²ΡΠ΅ ΠΏΠΎΠ»Ρ ΠΊΠ°ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Π° Kotlin.ΠΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ CValue
Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΡΡΡΠΊΡΡΡΡ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ CValuesRef
, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΡΡΡΠΊΡΡΡΡ ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅.
Π’Π΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅Ρ ΡΠ°Π·Π½ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈΠΏΠ°ΠΌΠΈ struct
ΠΈ union
Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ Kotlin. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π° a
, b
ΠΈ c
ΠΊΠ»Π°ΡΡΠ° MyUnion
Π² Kotlin ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ ΠΌΠ΅ΡΡΠΎ Π² ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ / Π·Π°ΠΏΠΈΡΠΈ ΡΠ²ΠΎΠ΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ union
Π½Π° ΡΠ·ΡΠΊΠ΅ C.
ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ
C Interop
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΈΠΏΡ ΡΡΡΡΠΊΡΡΡ ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ ΠΈΠ· Kotlin
Π‘Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ-ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ Π΄Π»Ρ ΡΠΈΠΏΠΎΠ² C struct
ΠΈ union
ΠΈΠ· Kotlin Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ ΠΊΠ°ΠΆΠ΅ΡΡΡ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ
Π² ΠΊΠΎΠ΄Π΅ Kotlin. ΠΠΎΠΊΠ° ΡΡΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ Π²ΠΎΠΏΡΠΎΡ — ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π΄Π»Ρ ΡΡΠΈΡ
ΠΊΠ»Π°ΡΡΠΎΠ². ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ MyStruct
ΠΈ MyUnion
, ΠΈΡ
ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°ΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ NativePtr
.ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π²Ρ Π½Π΅ Ρ
ΠΎΡΠΈΡΠ΅ ΠΈΠΌΠ΅ΡΡ Π΄Π΅Π»ΠΎ Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌΠΈ Π²ΡΡΡΠ½ΡΡ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Kotlin API Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΡΡΠΈΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π΄Π»Ρ Π½Π°Ρ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π½Π°ΡΠΈ MyStruct
ΠΈ MyUnion
Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². ΠΡ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΠΊΠ°ΠΊ kotlinx.cinterop.CValue
. Π Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅ kotlinx.cinterop.CValuesRef
. Kotlin ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π°ΠΌ API Π΄Π»Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Ρ ΠΎΠ±ΠΎΠΈΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ.
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ CValue
CValue
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ C. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ cValue
, ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° CValue
. Π€ΡΠ½ΠΊΡΠΈΡ ΡΡΠ΅Π±ΡΠ΅Ρ Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠΎΠΌ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° C. Π€ΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π° ββΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
fun
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠΎΡΠ° ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ cValue
ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
fun callValue () {
val cStruct = cValue
Π° = 42
Π± = 3.14
}
struct_by_value (cStruct)
val cUnion = cValue
b.a = 5
b.b = 2,7182
}
union_by_value (cUnion)
}
Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΡΡΡΠΊΡΡΡΡ ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ CValuesRef
CValuesRef
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Kotlin Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΈ C. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ
, Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² MyStruct
ΠΈ MyUnion
. Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΈΡ
ΠΏΡΡΠΌΠΎ Π² ΡΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅
fun
Π€ΡΠ½ΠΊΡΠΈΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ
Π½Π° kotlinx.cinterop.NativePlacement
Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ.
NativePlacement
ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΠΏΠ°ΠΌΡΡΡ Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌΠΈ malloc
ΠΈ free
. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ NativePlacement
. ΠΠ»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ kotlinx.cinterop.nativeHeap
ΠΈ Π½Π΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ nativeHeap.free (..)
, ΡΡΠΎΠ±Ρ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ ΠΏΠ°ΠΌΡΡΡ ΠΏΠΎΡΠ»Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
ΠΡΡΠ³ΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ — ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
fun
ΡΡΠ½ΠΊΡΠΈΡ. ΠΠ½ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΊΡΠ°ΡΠΊΠΎΡΡΠΎΡΠ½ΡΡ ΠΎΠ±Π»Π°ΡΡΡ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ, ΠΈ Π²ΡΠ΅ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ Π±ΡΠ΄ΡΡ ΠΎΡΠΈΡΠ΅Π½Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ Π±Π»ΠΎΠΊΠ°
.
ΠΠ°Ρ ΠΊΠΎΠ΄ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΉ Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌΠΈ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
fun callRef () {
memScoped {
val cStruct = alloc
cStruct.a = 42
cStruct.b = 3,14
struct_by_pointer (cStruct.ptr)
val cUnion = alloc
cUnion.b.a = 5
cUnion.b.b = 2,7182
union_by_pointer (cUnion.ptr)
}
}
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΠΎΡ ΠΊΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ptr
, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΎΡ ΡΠΈΠΏΠ° Π»ΡΠΌΠ±Π΄Π°-ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ° memScoped
, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ MyStruct
ΠΈ MyUnion
Π² ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ.
ΠΠ»Π°ΡΡΡ MyStruct
ΠΈ MyUnion
ΠΈΠΌΠ΅ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΠΏΠ°ΠΌΡΡΡ Π²Π½ΠΈΠ·Ρ. ΠΠ°ΠΌΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½Π°, ΠΊΠΎΠ³Π΄Π° ΡΡΠ½ΠΊΡΠΈΡ memScoped
Π·Π°Π²Π΅ΡΡΠΈΡΡΡ, ΡΡΠΎ ΡΠ°Π²Π½ΠΎ ΠΊΠΎΠ½ΡΡ Π΅Π΅ Π±Π»ΠΎΠΊΠ°
.Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²Π½Π΅ Π²ΡΠ·ΠΎΠ²Π° memScoped
. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Arena ()
ΠΈΠ»ΠΈ nativeHeap
Π΄Π»Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π΄ΠΎΠ»ΡΡΠ΅ ΠΈΠ»ΠΈ ΠΊΡΡΠΈΡΡΡΡΡΡ Π²Π½ΡΡΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ C.
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ CValue ΠΈ CValuesRef
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π΅ΡΡΡ ΡΠ»ΡΡΠ°ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠΌΡ Π²ΡΠ·ΠΎΠ²Ρ, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΡ ΠΆΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π΄ΡΡΠ³ΠΎΠΉ Π²ΡΠ·ΠΎΠ². ΠΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π² Kotlin / Native. ΠΠ΄Π΅ΡΡ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ NativePlacement
.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ CValue
ΡΠ½Π°ΡΠ°Π»Π° ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π² ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ:
fun callMix_ref () {
val cStruct = cValue
Π° = 42
Π± = 3,14
}
memScoped {
struct_by_pointer (cStruct.ptr)
}
}
ΠΡΠΎΡ ΠΊΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ptr
, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΎΡ ΡΠΈΠΏΠ° Π»ΡΠΌΠ±Π΄Π°-ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ° memScoped
, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ MyStruct
ΠΈ MyUnion
Π² ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ. ΠΡΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π²Π½ΡΡΡΠΈ Π±Π»ΠΎΠΊΠ° memScoped
.
ΠΠ»Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ readValue ()
:
fun callMix_value () {
memScoped {
val cStruct = alloc
cStruct.a = 42
cStruct.b = 3,14
struct_by_value (cStruct.readValue ())
}
}
ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠ΄
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΠ·Π½Π°Π»ΠΈ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ C Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΊΠΎΠ΄Π΅, Π²Ρ Π³ΠΎΡΠΎΠ²Ρ ΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΡΡΠΎ Π½Π° ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΈΡΠΏΡΠ°Π²ΠΈΠΌ ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π²ΡΠ·Π²Π°Π² Π·Π°Π΄Π°ΡΡ runDebugExecutableNative
Gradle Π² ΡΡΠ΅Π΄Π΅ IDE ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
./ gradlew runDebugExecutableNative
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΊΠΎΠ΄ Π² ΡΠ°ΠΉΠ»Π΅ hello.kt
ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
import interop. *
ΠΈΠΌΠΏΠΎΡΡ kotlinx.cinterop.alloc
import kotlinx.cinterop.cValue
import kotlinx.cinterop.memScoped
ΠΈΠΌΠΏΠΎΡΡ kotlinx.cinterop.ptr
import kotlinx.cinterop.readValue
fun main () {
println («ΠΡΠΈΠ²Π΅Ρ, ΠΠΎΡΠ»ΠΈΠ½ / Π ΠΎΠ΄Π½ΠΎΠΉ!»)
val cUnion = cValue
b.a = 5
b.b = 2,7182
}
memScoped {
union_by_value (cUnion)
union_by_pointer (cUnion.ptr)
}
memScoped {
val cStruct = alloc
Π° = 42
Π± = 3.14
}
struct_by_value (cStruct.readValue ())
struct_by_pointer (cStruct.ptr)
}
}
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ
ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² ΡΠ·ΡΠΊΠ° C ΠΈ ΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π² Kotlin / Native Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π°Ρ :
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ C Interop ΠΎΡ Π²Π°ΡΡΠ²Π°Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ.
ΠΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅: 08 ΡΠ΅Π½ΡΡΠ±ΡΡ 2021 Π³.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΡΡΠ°Π½Π½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°-Π΄Π²ΠΎΠ΅ΡΠΎΡΠΈΡ (Β«:Β») Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅? | Π‘Π°ΠΉ ΠΠ°ΠΌΠ΅Ρ
ΠΡΠΎ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ² .
ΠΡΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°. ΠΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ»Π΅Π½ΠΎΠ² Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ ΠΊΠ»Π°ΡΡΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ·ΠΎΠ² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ:
ΡΠΈΠΏ 1: ΠΎΠ±ΡΡΠ½ΠΎ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ
struct TestStruct {
int id;
TestStruct ()
{
id = 42;
}
};
ΡΠΈΠΏ 2: ΠΌΡ ΠΏΠΈΡΠ΅ΠΌ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ²,
struct TestStruct {
int id;
Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Π½ΠΎΠΌΠ΅Ρ;
TestStruct (): id (42) {}
};
ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΈΠΌΠ΅Ρ:
Point (int i = 0, int j = 0): x (i), y (j) {}
Π£ΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π²ΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ. ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΏΠΈΡΠ°Π½ΠΎ ΠΊΠ°ΠΊ:
Point (int i = 0, int j = 0) {
x = i;
y = j;
}
ΠΏΡΠΎΡΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄Π»Ρ ΡΠΏΠΈΡΠΊΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ².
CPP ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ². Java Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ², ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ
Π C ++ ΡΠΏΠΈΡΠΊΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ ΠΈΠ·-Π·Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ·ΡΠΊΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π»ΠΈΠ±ΠΎ ΠΎΡΡΡΡΡΡΠ²ΡΡΡ Π² Java, Π»ΠΈΠ±ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΠΎ-Π΄ΡΡΠ³ΠΎΠΌΡ Π² Java:
- const: Π² C ++ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΠΎΠ»Ρ, ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½ΡΠ΅ ΠΊΠ°ΠΊ const, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½Ρ ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ². Π Java Π΅ΡΡΡ ΠΏΠΎΠ»Ρ final, Π½ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°Π·Π½Π°ΡΠΈΡΡ ΠΈΡ ΠΏΠΎΠ»ΡΠΌ final Π² ΡΠ΅Π»Π΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°.Π C ++ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠΌΡ ΠΏΠΎΠ»Ρ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ.
- Π‘ΡΡΠ»ΠΊΠΈ: Π C ++ ΡΡΡΠ»ΠΊΠΈ (Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ) Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ Π΄Π»Ρ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡ-Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ Π±Π΅Π· ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠ° Π·Π°ΠΏΡΠ΅ΡΠ΅Π½ΠΎ. Π C ++ ΡΡΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΏΠΈΡΠΊΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ², ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ, Π΅ΡΠ»ΠΈ Π±Ρ Π²Ρ ΡΡΡΠ»Π°Π»ΠΈΡΡ Π½Π° ΡΡΡΠ»ΠΊΡ Π² ΡΠ΅Π»Π΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π±Π΅Π· Π΅Π³ΠΎ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π²Ρ Π±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΡΡΠ»ΠΊΡ. Π Java ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ Π²Π΅Π΄ΡΡ ΡΠ΅Π±Ρ ΠΊΠ°ΠΊ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ C ++ ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½Ρ ΠΈΠΌ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ.Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ½ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ°Π²Π½Ρ Π½ΡΠ»Ρ.
- ΠΡΡΠΌΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅ΠΊΡΡ. Π C ++ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΠ»Π΅ΠΉ, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π² Java ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ. Π’ΠΎ Π΅ΡΡΡ Π² C ++, Π΅ΡΠ»ΠΈ Π²Ρ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠ΅Π΅Ρ ΡΡΡΠΎΠΊΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ»Π΅Π½Π°, ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π²ΡΡΡΠΎΠ΅Π½ΠΎ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π΄Π»Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π² Java Π²Ρ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΠΌΠ΅ΡΡΠΎ Π΄Π»Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΊΠ°ΠΊΡΡ-ΡΠΎ Π΄ΡΡΠ³ΡΡ ΡΡΡΠΎΠΊΡ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, C ++ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π²Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ ΡΡΠΈΠΌ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΈΠ½Π°ΡΠ΅ ΠΎΠ½ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΎΡΡΠ°Π½ΡΡΡΡ Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ.ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ ΡΡΠΈΡ ΡΠΈΠΏΠΎΠ², Π½ΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½, ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² Π΄Π°Π΅Ρ Π²Π°ΠΌ ΡΠΏΠΎΡΠΎΠ± ΠΎΠ±ΠΎΠΉΡΠΈ ΡΡΠΎ. Π Java Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡΡΡ ΠΎΠ± ΡΡΠΎΠΌ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΡΠ»ΠΊΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π±ΡΠ΄ΡΡ ΠΈΠΌΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ null, ΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°Π·Π½Π°ΡΠΈΡΡ ΠΈΡ Π΄Π»Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ ΡΡΡΠ»Π°Π»ΠΈΡΡ. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΠΎΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ΅Π½ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π΄Π»Ρ Π½Π΅Π³ΠΎ; ΠΏΡΠΎΡΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΡΡΠ»ΠΊΡ Π½Π° Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°.
- Π ΡΠ΅Ρ
Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΡ
ΡΠ»ΡΡΠ°ΡΡ
, ΠΊΠΎΠ³Π΄Π° Java ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ ΡΠΏΠΈΡΠΊΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠ² ΡΡΠΏΠ΅ΡΠΊΠ»Π°ΡΡΠ° ΠΈΠ»ΠΈ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΅Π³ΠΎ ΠΏΠΎΠ»ΡΠΌ), ΡΡΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π²ΡΡ
Π΄ΡΡΠ³ΠΈΡ
ΡΠ·ΡΠΊΠΎΠ²ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ: ΡΡΠΏΠ΅ΡΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠ² ΡΡΠΏΠ΅ΡΠΊΠ»Π°ΡΡΠ° ΠΈ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ Java ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡ ΡΠ²ΠΎΠΈΠΌ ΠΏΠΎΠ»ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΡΠΎΠΉ ΡΠΎΡΠΊΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ½ΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ.