(3) X ΠΈΠΌΠ΅Π΅Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ Π·Π°Π΄Π°Π΅Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ-ctor (Β§R.12.6.2) Π΄Π»Ρ ΡΠ»Π΅Π½Π° M.
Π ΡΠ»ΡΡΠ°Π΅ 2 ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠΎΡΡΠ°Π²Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ. ΠΡΠ»ΠΈ ΡΠ»Π΅Π½ ΡΠΎΡΡΠ°Π²Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈΠΌΠ΅Π΅Ρ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ, ΡΠΎ ΠΎΠ½ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΠΈ ΡΠΎΡΡΠ°Π²Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ Π΄Π»Ρ Π½Π΅Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ Π² ΡΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΎΠ½ΠΈ ΠΈΠ΄ΡΡ Π² ΡΠ΅ΠΊΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, ΡΠΌ. ΡΠ°ΠΊΠΆΠ΅ Β§R.3.4, Β§R.6.7, Β§R.9.4.
R.12.6.2 ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ»Π΅Π½ΠΎΠ² ΠΈ Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ²
Π ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΡΠΌΡΡ Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΡΠ»Π΅Π½ΠΎΠ², Π½Π΅ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΠΌΡΡ ΠΈΠ· Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ². ΠΡΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π»Ρ ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΊΠΎΠ½ΡΡΠ°Π½Ρ ΠΈ ΡΡΡΠ»ΠΎΠΊ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΡΡ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ-ctor ΠΈΠΌΠ΅Π΅Ρ Π²ΠΈΠ΄
ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ-ctor:
: ΡΠΏΠΈΡΠΎΠΊ-ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ²-ΡΠ»Π΅Π½ΠΎΠ²
ΡΠΏΠΈΡΠΎΠΊ-ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ²-ΡΠ»Π΅Π½ΠΎΠ²:
ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ-ΡΠ»Π΅Π½Π°
ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ-ΡΠ»Π΅Π½Π° , ΡΠΏΠΈΡΠΎΠΊ-ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ²-ΡΠ»Π΅Π½Π°
ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ-ΡΠ»Π΅Π½Π°:
ΠΏΠΎΠ»Π½ΠΎΠ΅-ΠΈΠΌΡ-ΠΊΠ»Π°ΡΡΠ° ( ΡΠΏΠΈΡΠΎΠΊ-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ opt )
ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ
Π‘ΠΏΠΈΡΠΎΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ»Π΅Π½ΠΎΠ² ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΡΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ»Π΅Π½ΠΎΠ², ΡΠ²Π»ΡΡΡΠΈΡ ΡΡ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΡΠΈΠΏΠ° const, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
struct B1 { B1(int); /*β¦ */ };
struct B2 { B2(int); /*β¦ */ };
struct D: B1, B2 {
D(int);
B1 b;
const c;
};
D::D(int a): B2(a+1), B1(a+2), c(a+3), b(a+4)
{/*β¦ */}
D d(10);
Π Π½Π°ΡΠ°Π»Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΈΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ (Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ²-ΡΠ»Π΅Π½ΠΎΠ²), Π·Π°ΡΠ΅ΠΌ ΠΏΠΎ ΡΠΎΠΉ ΠΆΠ΅ ΡΡ Π΅ΠΌΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ ΡΠ»Π΅Π½Ρ, ΠΈ Π½Π°ΠΊΠΎΠ½Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ΅Π»ΠΎ D::D() (Β§R.12.1). ΠΠΎΡΡΠ΄ΠΎΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π²ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈ ΡΠ»Π΅Π½Ρ Π±ΡΠ΄ΡΡ ΡΠ½ΠΈΡΡΠΎΠΆΠ°ΡΡΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅, ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΈΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
ΠΡΠΎΠ±ΡΠΉ ΡΠ»ΡΡΠ°ΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ. ΠΠ½ΠΈ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΏΡΠ΅ΠΆΠ΄Π΅, ΡΠ΅ΠΌ Π»ΡΠ±ΠΎΠΉ Π½Π΅Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΈ Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ ΠΏΡΠΈ ΠΎΠ±Ρ ΠΎΠ΄Π΅ ΡΠ½ΠΈΠ·Ρ ΠΈ ΡΠ»Π΅Π²Π°-Π½Π°ΠΏΡΠ°Π²ΠΎ Π°ΡΠΈΠΊΠ»ΠΈΡΠ½ΠΎΠ³ΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π³ΡΠ°ΡΠ° Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ². ΠΠΎΡΡΠ΄ΠΎΠΊ "ΡΠ»Π΅Π²Π°-Π½Π°ΠΏΡΠ°Π²ΠΎ" - ΡΡΠΎ ΡΠΎΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈΠΌΠ΅Π½Π° Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² Π·Π°Π΄Π°ΡΡΡΡ ΠΏΡΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅.
ΠΠΎΠ»Π½ΡΠΌ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ. ΠΠ»Π°ΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π½Π°Π·ΡΠ²Π°ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠΈΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΡΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΡΠ»ΠΈ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π½Π΅ Π·Π°Π΄Π°Π½ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ-ΡΠ»Π΅Π½Π° Π΄Π»Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, ΡΠΎΠ³Π΄Π° ΡΡΠΎΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ,Π»ΠΈΠ±ΠΎ Π½Π΅ ΠΈΠΌΠ΅ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°. ΠΡΡΠΊΠΈΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ-ΡΠ»Π΅Π½Π° Π΄Π»Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, Π·Π°Π΄Π°Π½Π½ΡΠΉ Π½Π΅ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ ΠΊΠ»Π°ΡΡΠ° ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΡΡ. ΠΡΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡΠΈΠΌΠ΅Ρ:
class V {
public:
V();
V(int);
//β¦
};
class A: public virtual V {
public:
A();
A(int);
//β¦
};
class B: public virtual V {
public:
B();
B(int);
//β¦
};
class C: public A, public B, private virtual V {
public:
C();
C(int);
//β¦
};
A::A(int i): V(i) {/*β¦ */}
B::B(int i) {/*β¦ */}
C::C(int i) {/*β¦ */}
V v(1); // use V(int)
A a(2); // use V(int)
B b(3); // use V()
C c(4); // use V()
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ-ΡΠ»Π΅Π½Π° Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅
class X {
int a;
public:
const int& r;
X()::r(a) {}
};
X::r ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠ»Π°ΡΡΠ° X ΡΡΡΠ»ΠΊΠΎΠΉ Π½Π° X::a.
R.12.7 ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ ΠΈ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΡ
Π ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°Ρ ΠΈ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½. ΠΡΡΡΠ΄Π° ΡΠ»Π΅Π΄ΡΠ΅Ρ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ (Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΠ»ΠΈ ΠΊΠΎΡΠ²Π΅Π½Π½ΠΎ) Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠ·ΡΠ²Π°Π΅ΠΌΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° Π² ΠΊΠ»Π°ΡΡΠ΅ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΈΠ»ΠΈ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠ° ΠΈΠ»ΠΈ Π² Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠ°Ρ , Π½ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡ ΠΏΠΎΠ΄Π°Π²Π»ΡΠ΅Ρ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅. ΠΡΠΈΠΌ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎ, ΡΡΠΎ Π΅ΡΠ΅ Π½Π΅ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π½Π΅ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΈΠ»ΠΈ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠ°. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ:
class X {
public:
virtual void f();
X() { f(); } // Π²ΡΠ·ΠΎΠ² X::f()
~X() { f(); } // Π²ΡΠ·ΠΎΠ² X::f()
};
class Y: public X {
int& r;
public:
void f()
{
r++; // Π±Π΅Π΄Π°, Π΅ΡΠ»ΠΈ `r' Π½Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ΠΎ
}
Y(int& rr)::r(rr) {}
};
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΊΠΎΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΈΠ· ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΡΠΈΡΡΠΎΠΉ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½, Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ²Π½ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ ΡΡΠΎΡΠ½Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ (Β§R.10.3).
R.12.8 ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ°
ΠΠ±ΡΠ΅ΠΊΡΡ ΠΊΠ»Π°ΡΡΠ° ΠΌΠΎΠ³ΡΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡΡΡ Π΄Π²ΡΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ: Π»ΠΈΠ±ΠΎ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ (Β§R.5.17), Π»ΠΈΠ±ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ (Β§R.12.1, Β§R.8.4), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² (Β§R.5.2.2) ΠΈΠ»ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ (Β§R.6.6.3). ΠΠ»Ρ ΠΊΠ»Π°ΡΡΠ° X ΡΡΠΈ Π΄Π²Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»ΡΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΡΡ ΠΊΠ°ΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ (Β§R.12.1). Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΈΠ»ΠΈ ΠΎΠ΄Π½Ρ ΠΈΠ· Π½ΠΈΡ , ΠΈΠ»ΠΈ ΠΎΠ±Π΅. ΠΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ» ΠΈΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, ΡΠΎ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠ»Π΅Π½ΠΎΠ² ΠΊΠ»Π°ΡΡΠ° X ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΠΊΠ°ΠΊ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΡΠ»Π΅Π½Π°ΠΌ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎ ΡΠ»Π΅Π½Π°ΠΌ.
ΠΡΠ»ΠΈ Π²ΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΈ Π²ΡΠ΅ ΡΠ»Π΅Π½Ρ ΠΊΠ»Π°ΡΡΠ° X ΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠΈΠΏΠ° const, ΡΠΎ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅ΠΌΡΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ X Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΈΠΏΠ° const X& ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΡΠ°ΠΊ:
X::X(const X&)
ΠΠ½Π°ΡΠ΅, Ρ Π½Π΅Π³ΠΎ Π±ΡΠ΄Π΅Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΈΠΏΠ° X&:
X::X(X&)
ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠΈΠΏΠ° const ΠΊΠ»Π°ΡΡΠ° X Π±ΡΠ΄Π΅Ρ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°.
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ Π²ΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΈ ΡΠ»Π΅Π½Ρ ΠΊΠ»Π°ΡΡΠ° X ΠΈΠΌΠ΅ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ, Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΈΠΏΠ° const, ΡΠΎΠ³Π΄Π° ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅ΠΌΠ°Ρ Π΄Π»Ρ X ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΈΠΏΠ° const X& ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΡΠ°ΠΊ:
X& X::operator=(const X&)
ΠΠ½Π°ΡΠ΅, Ρ Π½Π΅Π΅ Π±ΡΠ΄Π΅Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΈΠΏΠ° X&:
X& X::operator=(X&)
ΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ° X ΡΠΈΠΏΠ° const Π±ΡΠ΄Π΅Ρ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ.
ΠΠ±ΡΠ΅ΠΊΡΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ, Π±ΡΠ΄ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ±ΡΠ΅ΠΊΡΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ, Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ ΠΈΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅ΠΌΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ.
ΠΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΡΠ»Π΅Π½Π°ΠΌ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎ ΡΠ»Π΅Π½Π°ΠΌ ΠΎΠ·Π½Π°ΡΠ°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅: Π΅ΡΠ»ΠΈ ΠΊΠ»Π°ΡΡ X ΠΈΠΌΠ΅Π΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ»Π΅Π½Π° ΠΊΠ»Π°ΡΡ M, Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ»Π΅Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ Π² M ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ M ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. ΠΡΠ»ΠΈ ΠΊΠ»Π°ΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π½ ΡΠΈΠΏΠ° const, ΠΈΠ»ΠΈ ΡΠ»Π΅Π½, ΡΠ²Π»ΡΡΡΠΈΠΉΡΡ ΡΡΡΠ»ΠΊΠΎΠΉ, ΠΈΠ»ΠΈ ΡΠ»Π΅Π½ ΠΈΠ»ΠΈ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, Π³Π΄Π΅ ΡΡΠ½ΠΊΡΠΈΡ operator=() ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΠ½ΠΎΠΉ, ΡΠΎ Π΄Π»Ρ Π½Π΅Π³ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠ·Π΄Π°Π½Π°. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ ΡΠ»Π΅Π½ ΠΈΠ»ΠΈ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΊΠ»Π°ΡΡΠ° M ΠΈΠΌΠ΅Π΅Ρ ΡΠ°ΡΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠ·Π΄Π°Π½.
ΠΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΡΠ²ΠΈΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ, ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±ΡΠ΄ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΠΈΡΠ°Π½Ρ (Ρ.Π΅. Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΎ ΡΠ΅Π»ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ). ΠΠ½ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΡΡΠ½ΠΊΡΠΈΡ X::operator=() Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΠΎΠΆΠ΄Π΅Π½Π° ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π½Π΅Ρ ΡΠ²Π½ΠΎΠ³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ, Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° X ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΊΠ»Π°ΡΡΠ° X ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΊΠ»Π°ΡΡΠ°, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΡ X, ΠΈΠ»ΠΈ Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ Π°Π΄ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ X::operator=(). ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½Π°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ.
ΠΡΠ»ΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΏΠΈΡΠ°Π½Ρ Π½Π΅ΡΠ²Π½ΠΎ, ΡΠΎ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ ΠΎΠ±ΡΠΈΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ-ΡΠ»Π΅Π½Π°ΠΌΠΈ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠ° X ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎ Π΅Π΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠ»ΠΊΠ° ΡΠΈΠΏΠ° X& Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡ.
ΠΡΠ»ΠΈ Π² ΠΊΠ»Π°ΡΡΠ΅ X Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ X::operator=(), ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΌ ΠΊΠ»Π°ΡΡ X, ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΠΎΠΆΠ΄Π°ΡΡΡΡ. ΠΡΠ»ΠΈ Π² ΠΊΠ»Π°ΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΠΎΠΆΠ΄Π°ΡΡΡΡ. ΠΡΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡΠΈΠΌΠ΅Ρ:
class X {
//β¦
public:
X(int);