return 0;
}
int * FuncOne()
{
int * pInt = new int (5):
cout << "the value of pint in FuncOne is: " << *pInt << endl:
return pInt;
}
7. ΠΡΠΏΡΠ°Π²ΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ· ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ 6.
#include <iostream.h>
int FuncOne();
int main()
{
int theInt = FuncOne();
cout << "the value of pint in main is: " << theInt << endl;
return 0:
}
int FuncOne()
{
int * pInt = new int (5);
cout << "the value of pint in FuncOne is: " << <<pInt << endl;
delete pint;
return temp;
}
8. ΠΡΡΠΊΠΈ: ΡΡΠΎ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π² ΡΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅?
1: #include <iostream.h>
3: class CAT
4: {
5: public:
6: CAT(int age) { itsAge = age; }
7: ~CAT(){ }
8: int GetAge() const { return itsAge; }
9: private:
10: int itsAge:
11: };
12:
13: CAT & MakeCat(int age):
14: int main()
15: {
16: int age = 7;
17: CAT Boots = MakeCat(age);
18: cout << "Boots is " << Boots.GetAge() << " years old\n";
19: return 0:
20: }
22: CAT & MakeCat(int age)
23: {
24: CAT * pCat = new CAT(age);
25: return *pCat;
26: }
Π€ΡΠ½ΠΊΡΠΈΡ MakeCat Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° CAT, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ Π² ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π·Π΄Π΅ΡΡ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π΅Π΅ ΡΡΠ΅ΡΠΊΠ΅.
9. ΠΡΠΏΡΠ°Π²ΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ· ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ 8.
1: #include <iostream.h>
2:
3: class CAT
4: {
5: public:
6: CAT(int age) { itsAge = age; }
7: ~CAT(){ }
8: int GetAgeO const { return itsAge;}
9: private:
10: int itsAge;
11: };
13: CAT * MakeCat(int age);
14: int main()
15: {
16: int age = 7;
17: CAT * Boots = MakeCat(age);
18: cout << "Boots is " << Boots.GetAge() << " years old\n";
19: delete Boots;
20: return 0;
21: }
23: CAT * MakeCat(int age)
24: {
25: return new CAT(age);
26: }
ΠΠ΅Π½Ρ 10
ΠΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ
1. ΠΡΠ»ΠΈ Π²Ρ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅Π½, ΠΊΠ°ΠΊ ΠΏΠΎΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ°Π·Π»ΠΈΡΠΈΡΡ ΡΠ°Π·Π½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ?
ΠΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½Π½ΡΠΌΠΈ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ ΠΈΠΌΡ, Π½ΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΏΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ ΠΈΠ»ΠΈ ΡΠΈΠΏΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ².
2. ΠΠ°ΠΊΠ°Ρ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ?
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΡΠ΅Ρ ΠΏΠ°ΠΌΡΡΡ, Π° ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ β Π½Π΅Ρ. ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΠ°ΡΡΠΎ ΡΠ²Π»ΡΡΡΡΡ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΠΌΠΈ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ Π½ΠΎΠ²ΡΡ ΡΠΈΠΏΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ typedef.
3. ΠΠΎΠ³Π΄Π° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ-ΠΊΠΎΠΏΠΈΡΠΎΠ²ΡΠΈΠΊ?
ΠΡΠ΅Π³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΊΠΎΠΏΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΡΠΎ ΡΠ»ΡΡΠ°Π΅ΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
4. ΠΠΎΠ³Π΄Π° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ?
ΠΠ΅ΡΡΡΡΠΊΡΠΎΡ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π»ΠΈΠ±ΠΎ ΠΏΠΎ ΠΏΡΠΈΡΠΈΠ½Π΅ Π²ΡΡ ΠΎΠ΄Π° Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ, Π»ΠΈΠ±ΠΎ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° delete Π΄Π»Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ΅Π³ΠΎ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ.
5. Π§Π΅ΠΌ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ-ΠΊΠΎΠΏΠΈΡΠΎΠ²ΡΠΈΠΊ ΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ (=)?
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ, Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ-ΠΊΠΎΠΏΠΈΡΠΎΠ²ΡΠΈΠΊ ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ.
6. Π§ΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ this?
ΠΡΠΎ ΡΠΊΡΡΡΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Π΅, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠ°ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ.
7. ΠΠ°ΠΊ ΡΠ°Π·Π»ΠΈΡΠΈΡΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΡ ΠΏΡΠ΅ΡΠΈΠΊΡΠ½ΡΡ ΠΈ ΠΏΠΎΡΡΡΠΈΠΊΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΏΡΠΈΡΠ°ΡΠ΅Π½ΠΈΡ?
ΠΡΠ΅ΡΠΈΠΊΡΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π½Π΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². ΠΠΎΡΡΡΠΈΠΊΡΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΈΠΏΠ° int, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ»Π°Π³Π° Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, ΡΠΎΠΎΠ±ΡΠ°ΡΡΠ΅Π³ΠΎ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠΎ ΠΏΠΎΡΡΡΠΈΠΊΡΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ.
8. ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΈΡΡ operator+ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΈΠΏΠ° short int?
ΠΠ΅Ρ, Π΄Π»Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ² Π½Π΅Π»ΡΠ·Ρ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ°ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ².
9. ΠΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π»ΠΈ Π² C++ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠ° operator++ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠ½ Π²ΡΠΏΠΎΠ»Π½ΡΠ» Π² ΠΊΠ»Π°ΡΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π΄Π΅ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°?
ΠΡΠ°Π²ΠΎΠΌΠΎΡΠ½ΠΎ, Π½ΠΎ ΡΡΠΎΠ³ΠΎ Π΄Π΅Π»Π°ΡΡ Π½Π΅ ΡΡΠΎΠΈΡ. ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ°ΡΡ ΡΠ°ΠΊΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΠΎΠ½ΡΡΠ΅Π½ Π»ΡΠ±ΠΎΠΌΡ ΡΠΈΡΠ°ΡΠ΅Π»Ρ Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
10. ΠΠ°ΠΊ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΡΠΈΠΏ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° Π² ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ²?
ΠΠΈΠΊΠ°ΠΊ. ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°ΠΌ ΠΈ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠ°ΠΌ, ΠΎΠ½ΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ
1. ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° SimpleCircle (ΠΏΡΠΎΡΡΠ°Ρ ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΡ) Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½ΠΎΠΉ-ΡΠ»Π΅Π½ΠΎΠΌ itsRadius (ΡΠ°Π΄ΠΈΡΡ). Π ΠΊΠ»Π°ΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΈ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ, Π·Π°Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠ΅ΡΠΎΠ΄ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ°Π΄ΠΈΡΡΠ°.
class SimpleCircle
{
public:
SimpleCircle();
~SimpleCircle();
void SetRadius(int);
int GetRadiusO;
private:
int itsRadius;
};
2. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠ»Π°ΡΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ Π² ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠΈ !, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°, Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ itsRadius Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ 5.
SimpleCircle::SimpleCircle():
itsRadius(5);
{ }
3. ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π² ΠΊΠ»Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΠ°ΡΠ°-
ΠΌΠ΅ΡΡΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ itsRadius.
SimpleCircle::SimpleCircle(int radius):
itsRadius(radius)
{ }
4. ΠΠ΅ΡΠ΅Π³ΡΡΠ·ΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΏΡΠ΅ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ° ΠΈ ΠΏΠΎΡΡΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ° Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² Π²Π°-
ΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠ΅ SimpleCircle Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ itsRadius.
const SimpleCircle& SimpleCircle::operator++()
{
++(itsRadius);
return *this;
}
// ΠΏΠΎΡΡΡΠΈΠΊΡΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Operator ++(int).
// ΠΡΠ±ΠΎΡΠΊΠ°, Π·Π°ΡΠ΅ΠΌ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
const SimpleCircle SimpleCircle::operator++ (int)
// ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΠΌ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° SimpleCircle ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ
* this
SimpleCircle temp(*this);
++(itsRadius);
return temp;
}
5. ΠΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ SimpleCircle ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠΎΡ ΡΠ°Π½ΡΡΡ itsRadius Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ.
class SimpleCircle
{
public:
SimpleCircle();
SimpleCircle(int);
~SimpleCircle();
void SetRadius(int);
int GetRadius();
const SimpleCircle& operator++();
const SimpleCircle operator++(int);
private:
int *itsRadius;
};
SimpleCircle::SimpleCircle()
{itsRadius = new int(5);}
SimpleCircle::SimpleCircle(int radius)
{itsRadius = new int(radius);}
SimpleCircle::~SimpleCircle()
{
delete itsRadius;
}
const SimpleCircle& SimpleCircle::operator++()
{
++(*itsRadius);
return <<this;
}
// ΠΠΎΡΡΡΠΈΠΊΡΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Operator++(int).
// ΠΡΠ±ΠΎΡΠΊΠ°, Π·Π°ΡΠ΅ΠΌ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
const SimpleCircle SimpleCircle::operator++ (int)
{
// ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΠΌ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° SimpleCircle ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ
*this
SimpleCircle temp(<<this);
++(*itsRadius);
return temp;
}
6. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π² ΠΊΠ»Π°ΡΡΠ΅ SimpleCircle ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ-ΠΊΠΎΠΏΠΈΡΠΎΠ²ΡΠΈΠΊ.
SimpleCircle::SimpleCircle(const SimpleCircle & rhs)
{
int val = rhs.GetRadius();
itsRadius = new int(val);
}
7. ΠΠ΅ΡΠ΅Π³ΡΡΠ·ΠΈΡΠ΅ Π² ΠΊΠ»Π°ΡΡΠ΅ SimpleCircle ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ.
SimpleCircle& SimpleCircle::operator=(const SimpleCircle & rhs)
{
if (this == &rhs)
return *tnis;
delete itsRadius;
itsRadius = new int;
*itsRadius = rhs.GetRadius();
return *this;
}
8. ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ·Π΄Π°Π΅Ρ Π΄Π²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠ»Π°ΡΡΠ° SimpleCircle. ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, Π·Π°Π΄Π°Π½Π½ΡΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π° Π²ΡΠΎΡΠΎΠΌΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΏΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΠΏΡΠΈΡΠ²ΠΎΠΉΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 9. Π‘ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΈΠ· ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ° ΠΈ Π²ΡΠ²Π΅Π΄ΠΈΡΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π° ΠΏΠ΅ΡΠ°ΡΡ. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΏΡΠΈΡΠ²ΠΎΠΉΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π΄ΡΡΠ³ΠΎΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈ Π²ΡΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π½Π° ΠΏΠ΅ΡΠ°ΡΡ.
#include <iostream.h>
class SimpleCircle
{
public:
// ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ
SimpleCircle();
SimpleCircle(int);
SimpleCircle(const SimpleCircle &);
~SimpleCircle() {}
// ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄Π°Π½Π½ΡΠΌ
void SetRadius(int);
int GetRadius() const;
// ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ
const SimpleCircle& operator++();
const SimpleCircle operator++(int);
SimpleCircle& operator=(const SimpleCircle &):
private:
int *itsRadius;
};
SimpleCircle::SimpleCircle()
{itsRadius = new int(5);}
SimpleCircle::SimpleCircle(int radius)
{itsRadius = new int(radius);}
SimpleCircle::SimpleCircle(const SimpleCircle & rh$)
{
int val = rhs.GetRadius();
itsRadius = new int(val);
}
SimpleCircle::~SimpleCircle()
{
delete itsRadius;
}
SimpleCircleS SimpleCircle :operator=(const SimpleCircle & rhs)
{
if (this == &rhs)
return <<this;
*itsRadius = rhs.GetRadius();
return *this;
}
const SimpleCircle& SimpleCircle::operator++()
{
++(*itsRadius);
return *this;
}
// ΠΠΎΡΡΡΠΈΠΊΡΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Operator ++(int).
// ΠΡΠ±ΠΎΡΠΊΠ°, Π·Π°ΡΠ΅ΠΌ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
const SimpleCircle SimpleCircle::operator++ (int)
{
// ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΠΌ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° SimpleCircle ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ
*this
SimpleCircle ternp(*this);
++(*itsRadius);
return temp;
}
int SimpleCircle::GetRadius() const
{
return ~itsRadius;
}
int main()
{
SimpleCircle CircleOne, CircleTwo(9);
CircleOne++;
++CircleTwo;
cout << "CircleOne: " << CircleOne.GetRadius() << endl;
cout << "CircleTwo: " << CircleTwo.GetRadius() << endl;
CircleOne = CircleTwo;
cout << "CircleOne: " << CircleOne.GetRadius() << endl:
cout << "CircleTwo: " << CircleTwo.GetRadius() << endl;
return 0;
}
9. ΠΡΡΠΊΠΈ: ΡΡΠΎ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ?