|
С++ da konstruktorlar va destruktorlar c ++ tilidagi konstruktor bu maxsus
|
Sana | 13.03.2024 | Hajmi | 25.91 Kb. | | #170555 |
Bog'liq amaliy 6 Документ Microsoft Word
С++ da konstruktorlar va destruktorlar
C ++ tilidagi konstruktor - bu maxsus ob'ekt bo'lib, u sinf ob'ekti yaratilganda avtomatik ravishda chaqiriladi. Konstruktor yaratish uchun sinf bilan bir xil nomdan foydalaning, so'ngra qavslar bilan yozing ():
#include
using namespace std;
class MyClass { // bu class
public: // Kirish spetsifikatori
MyClass() { // Constructor
cout << "Hello World!";
}
};
int main() {
MyClass myObj; // MyClass ob'ektini yarating (bu konstruktorni chaqiradi)
return 0;
}
Eslatma: Konstruktor klass bilan bir xil nomga ega, u doimo bo'ladi public va u hech qanday qiymat qaytarmaydi.
Konstruktor parametrlari.
Konstruktorlar parametrlarni (odatdagi funktsiyalar kabi) ham olishi mumkin, bu esa atributlar uchun boshlang'ich qiymatlarni belgilashda foydali bo'lishi mumkin.
#include
using namespace std;
class Car {
public:
string brand;
string model;
int year;
Car(string x, string y, int z) {
brand = x;
model = y;
year = z;
}
};
int main() {
Car carObj1("BMW", "X5", 1999);
Car carObj2("Ford", "Mustang", 1969);
// Print values
cout << carObj1.brand << " " << carObj1.model << " " << carObj1.year << "\n";
cout << carObj2.brand << " " << carObj2.model << " " << carObj2.year << "\n";
return 0;
}
Natija:
BMW X5 1999
Ford Mustang 1969
Vazifalar singari, konstruktorlarni ham sinfdan tashqari aniqlash mumkin. Birinchidan, sinf ichidagi konstruktorni e'lon qiling va keyin sinf nomini ko'rsatib, uni sinfdan tashqarida aniqlang, so'ngra o'lchamlarni aniqlash :: operatori, keyin konstruktorning nomi (sinf bilan bir xil):
#include
using namespace std;
class Car {
public:
string brand;
string model;
int year;
Car(string x, string y, int z);
};
Car::Car(string x, string y, int z) {
brand = x;
model = y;
year = z;
}
int main() {
Car carObj1("BMW", "X5", 1999);
Car carObj2("Ford", "Mustang", 1969);
cout << carObj1.brand << " " << carObj1.model << " " << carObj1.year << "\n";
cout << carObj2.brand << " " << carObj2.model << " " << carObj2.year << "\n";
return 0;
}
Destruktorlar
Destruktorlar obyektlarni o'chirish jarayonida ishga tushadi. Bu obyekt yoki obyektlar o'chirilganda, bu funksiya ishga tushadi. Destruktorlar obyekt yaratilgan tartibda avtomatik ravishda ishga tushadi. Destruktorlarni klassning ichida o'zgarishlar yozish orqali yaratish mumkin.
class Shaxs {
public:
Shaxs() {
// Konstruktor kodlari}
~Shaxs() {
// Destruktor kodlari
Bu kodlar shaxs klassining konstruktor va destruktorini ko'rsatadi. Obyekt yaratilganda konstruktor ishga tushadi, obyekt o'chirilganda destruktor ishga tushadi.
Hozirda, siz publicbizning barcha sinf misollarimizda paydo bo'lgan kalit so'z bilan juda yaxshi tanishsiz:
#include
using namespace std;
class MyClass {
public:
int x;
};
int main() {
MyClass myObj;
myObj.x = 15;
cout << myObj.x;
return 0;
}
Public kalit so'z bir bo'lib kirish ma'lumoti. Kirish spetsifikatorlari sinf a'zolariga (atributlar va usullarga) qanday kirish mumkinligini belgilaydi. Yuqoridagi misolda, a'zolar public- bu kodni tashqaridan kirish va o'zgartirish mumkinligini anglatadi.
Dasturlash xavfsizlik birinchi o'rinda turadi. Biz aynan tashqi kirishni to'xtatish kerak bo'lsa nima qilamiz? buning javobi quyidagi ma'lumot turlari bilan izohlanadi.
C ++ da uchta kirish spetsifikatorlari mavjud:
public - A'zolarga sinfdan tashqari kirish mumkin.
private - A'zolarga sinfdan tashqarida kirish (yoki ko'rish) mumkin emas.
protected- A'zolarga sinfdan tashqariga kirish mumkin emas, ammo ularga meros qolgan sinflarda kirish mumkin. Keyinchalik merosxo'rlik haqida ko'proq bilib olasiz .
Quyidagi misolda biz publicva privatea'zolar o'rtasidagi farqni ko'rsatamiz :
#include
using namespace std;
class MyClass {
public:
int x;
private:
int y;
};
int main() {
MyClass myObj;
myObj.x = 25;
myObj.y = 50;
return 0;
}
In function 'int main()':
Line 8: error: 'int MyClass::y' is private
Line 14: error: within this context
error: y is private
|
| |