Darsliklar C++ Konstruktor (Sinf/Class)

C++ C++ Konstruktor (Sinf/Class)

Konstruktor — obyekt yaratilgan paytda avtomatik ishlaydigan maxsus metod. U obyektni “tug’ilish” lahzasida sozlaydi: maydonlarga boshlang’ich qiymat beradi, kerakli resurslarni tayyorlaydi. Konstruktorsiz siz obyektni yaratib, so’ng har bir maydonini qo’lda to’ldirishga majbur bo’lardingiz.

Konstruktorsinf nomi bilan bir xil nomga ega, qaytish turi bo’lmagan maxsus metod. U obyekt yaratilishi bilan avtomatik chaqiriladi.

Oddiy konstruktor

Konstruktor sinf nomi bilan aynan bir xil ataladi va hech narsa qaytarmaydi:

#include <iostream>
#include <string>
using namespace std;

class Foydalanuvchi {
public:
    string ism;

    Foydalanuvchi() {          // konstruktor
        ism = "mehmon";
        cout << "Obyekt yaratildi" << endl;
    }
};

int main() {
    Foydalanuvchi u;           // konstruktor avtomatik ishlaydi
    cout << "Ism: " << u.ism << endl;
    return 0;
}
Obyekt yaratildi
Ism: mehmon

Diqqat: Foydalanuvchi u; yozganimizdayoq konstruktor o’zi ishga tushdi va ism ga standart qiymat berdi. Biz uni chaqirmadik — u avtomatik chaqirildi.

Parametrli konstruktor

Konstruktor parametr qabul qilib, obyektni yaratish paytida sozlashi mumkin. Bu — eng ko’p ishlatiladigan naqsh:

#include <iostream>
#include <string>
using namespace std;

class Mahsulot {
public:
    string nomi;
    int narxi;

    Mahsulot(string n, int p) {
        nomi = n;
        narxi = p;
    }
};

int main() {
    Mahsulot telefon("iPhone", 12000000);
    cout << telefon.nomi << " — " << telefon.narxi << endl;
    return 0;
}
iPhone — 12000000

Obyekt yaratishning o’zidayoq (Mahsulot telefon("iPhone", 12000000)) unga qiymat berdik. Konstruktor bu qiymatlarni qabul qilib, maydonlarga joyladi. Bu obyektni bir qatorda to’liq tayyor holga keltiradi.

Initsializatsiya ro’yxati

Konstruktorda maydonlarni sozlashning yanada samarali usuli — initsializatsiya ro’yxati. U ikki nuqtadan keyin yoziladi:

#include <iostream>
#include <string>
using namespace std;

class Talaba {
public:
    string ism;
    int ball;

    Talaba(string i, int b) : ism(i), ball(b) {}
};

int main() {
    Talaba t("Farrux", 95);
    cout << t.ism << ": " << t.ball << endl;
    return 0;
}
Farrux: 95

: ism(i), ball(b) yozuvi maydonlarni to’g’ridan-to’g’ri boshlang’ich qiymat bilan yaratadi. Bu usul tananing ichida ism = i yozishdan tezroq va zamonaviy C++’da afzal ko’riladi.

Standart va parametrli konstruktor birga

Bir sinfda bir necha konstruktor bo’lishi mumkin (bu — overloading). Bu obyektni turlicha yaratishga imkon beradi. Muhim qoida: agar hech qanday konstruktor yozmasangiz, C++ o’zi bo’sh standart konstruktor yaratadi; parametrli konstruktor yozsangiz esa, standartini o’zingiz qo’shishingiz kerak bo’lishi mumkin.

Xulosa

Bu bo’limda konstruktor tushunchasini, parametrsiz va parametrli shakllarini, initsializatsiya ro’yxatini va konstruktorning avtomatik ishlashini ko’rib chiqdik. Konstruktor — obyektni tug’ilishida to’g’ri sozlaydi. Keyingi darsda obyektga kirish ma’lumoti — foydalanuvchidan qiymat olishni ko’rib chiqamiz.