O. X. Azamatov
O‘zaro do‘st funksiyalar va sinflar
Download 1.82 Mb. Pdf ko'rish
|
3072-Текст статьи-7829-1-10-20200908
7.3. O‘zaro do‘st funksiyalar va sinflar
Agarda bir nechta sinf funksiyalariga boshqa sinfning xususiy ma’lumotlariga murojaat qilish kerak bo‘lsa, u holda C++ do‘stona sinfning faqatgina belgilangan funksiyalari xususiy elementlarga murojaat etishiga imkoniyat beradi. Masalan, faqatgina change_catalog va get_catalog funksiyalarga book sinfning xususiy elementlariga murojaat kerak. Quyida ko‘rsatilgandek, book sinfning ichida faqatgina shu funksiyalarda xususiy funksiyalarga murojaat chegarasini qo‘yishi lozim: class book { public: book(char *, char *, char *); void show_book(void); 65 friend char *librarian::get_catalog(book); friend void librarian: :change_catalog( book *, char *); private: char title[64]; char author[ 64 ]; char catalog[64]; }; Ko‘rib turganimizdek friend operatorlari xususiy elementlarga murojat qiluvchi hamma do‘st funksiyalarini to‘liq prototiplarini o‘z ichiga oladi. Agar dastur bir sinfdan boshqasiga murojaat qilsa va sinflar aniqlanish tartibi noto‘g‘ri bo‘lsa sintaksik xatoga duch kelish mumkin. Bizning holda book klassi librarian klassida e’lon qilingan funksiyalar prototiplariga murojat qilmoqda. Shuning uchun librarian klassi aniqlanishi book klassi aniqlanishidan oldin kelishi kerak, biroq librarian klassi book klassiga murojat qilmoqda: class librarian { public: void change_catalog(book *, char *); char *get_catalog(book); }; book klassi aniqlanishini librarian klassi aniqlanishidan oldini qo‘yib bo‘lmagani uchun. C++ book klassini e’lon qilish imkonini beradi va shu bilan u kompilyatorga bunday klass borligi xaqida xabar beradi va keyinroq o‘zi ham aniqlanadi. Quyida buni qanday amalga oshirish keltirilgan: class book; // sinf elon qilinishi Download 1.82 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling