Javoblar Dasturlash asoslari


Bu yerda biz kasrni 4 va 5 raqamlari bilan initsializatsiya qildik, natija 4/5!


Download 57.96 Kb.
bet21/30
Sana08.03.2023
Hajmi57.96 Kb.
#1250414
1   ...   17   18   19   20   21   22   23   24   ...   30
Bog'liq
Javoblar Dasturlash asoslari

Bu yerda biz kasrni 4 va 5 raqamlari bilan initsializatsiya qildik, natija 4/5!
C++11 da biz bir xil initsializatsiyadan foydalanishimiz mumkin:
int a { 7 }; // uniform-initsializatsiya Fraction drob {4, 5};
Biz parametrli konstruktor uchun faqat bitta parametrni belgilashimiz mumkin, ikkinchi qiymat esa standart qiymat bo'ladi: Fraction seven(7); Konstruktorlar uchun standart qiymatlar boshqa funksiyalar bilan bir xil ishlaydi, shuning uchun yuqoridagi misolda seven(7) ni chaqirganimizda, ikkinchi parametr 1 (standart) bo'lgan Fraction (int, int) chaqiriladi.
62. C++da obyektlar yaratisObyektga yo'naltirilgan dasturlashda ma'lumotlar turlari nafaqat ma'lumotlarni, balki shu ma'lumotlar bilan ishlaydigan funksiyalarni ham o'z ichiga olishi mumkin. C++ bu ma'lumot turini aniqlash uchun class kalit so'zidan foydalanadi. class kalit so'zidan foydalanish foydalanuvchi tomonidan belgilanadigan yangi ma'lumotlar turini, sinfini aniqlaydi. C++ da sinflar strukturalarga juda o'xshash, faqat ular ko'proq kuch va moslashuvchanlikni ta'minlaydi. Aslida, quyidagi struktura va sinf funksional jihatdan bir xil:
#include
class DateClass
{ int m_day; //jimlik bo’yicha yopiq int m_month; int m_year;
public:
void setDate(int day, int month, int year) // ochiq
{ // setDate () usuli sinfning yopiq a'zolaridan foydalana oladi, chunki u o'zi sinf a'zosi m_day = day;
m_month = month;
m_year = year; }
void print() // ochiq, har qanday ob'ekt kirish huquqiga ega
{ std::cout << m_day << "/" << m_month << "/" << m_year; } };
int main()
{ DateClass date; date.setDate(12, 11, 2018); //bu to’g’ri date.print(); // to’g’ri, chunki print() ochiq foydalanish xususiyatiga ega return 0; }
63. C++da obyektlarni initsializatsiyalashInitsializatsiyani nusxalash Oddiy o'zgaruvchilar singari, sinflar ham nusxa ko'chirish yordamida ishga tushirilishi mumkin: int a = 7; // nusxa ko'chirishni boshlash Fraction eight = Fraction(8); // nusxa ko'chirish boshlanishi, Fraction (8, 1) chaqiriladi Fraction nine = 9; // nusxa ko'chirishni boshlash. Tuzuvchi 9 ni Fraktsiyaga o'tkazish usullarini qidiradi, natijada Fraction (9, 1) konstruktoriga murojaat bo'ladi.
Shu bilan birga, sinfni ishga tushirishning bu shaklidan qochish tavsiya etiladi, chunki bu unchalik samarasiz bo'lishi mumkin. Bir xil boshlang'ich, to'g'ridan -to'g'ri ishga tushirish va nusxa ko'chirish boshlang'ich ma'lumotlarning asosiy turlari bilan bir xil bo'lsa -da, bu sinflarga umuman to'g'ri kelmaydi (garchi yakuniy natija ko'pincha bir xil bo'ladi). Bu masalani keyingi darslarda batafsil ko'rib chiqamiz. Qoida: O'zingizning sinflaringiz ob'ektlari bilan nusxa ko'chirishni ishlatmang. Konstruktorlar sonini kamaytirish Fraksiya klassi va ikkita konstruktorli (standart va parametrli) misolda standart konstruktor aslida ortiqcha. Biz bu sinfni shunday soddalashtira olamiz:

Download 57.96 Kb.

Do'stlaringiz bilan baham:
1   ...   17   18   19   20   21   22   23   24   ...   30




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling