21 / 90

C++ Default Arguments

C++ standart parametrlar

C++ dasturlashda biz function parametrlari uchun standart qiymatlarni berishimiz mumkin.

Agar standart argumentlari bo'lgan funksiya argumentlarni o'tkazmasdan chaqirilsa, u holda standart parametrlardan foydalaniladi.

Biroq, agar funksiya chaqirilayotganda argumentlar uzatilsa, standart argumentlar e'tiborga olinmaydi.

Standart argumentlarning ishlashi

How default arguments work in C++

Working of Default Arguments in C++ Programming

Yuqoridagi rasmdan standart argumentlarning ishlashini tushunishimiz mumkin:

  1. temp() chaqirilganda, funksiya tomonidan ikkala standart parametr ham ishlatiladi.
  2. temp(6) chaqirilganda, birinchi argument 6 ga aylanadi, ikkinchi parametr uchun standart qiymat ishlatiladi.
  3. temp(6, -2.3) chaqirilganda, ikkala standart parametr bekor qilinadi, natijada i = 6 va f = -2.3 .
  4. temp(3.4) uzatilganda, funksiya nomaqbul tarzda harakat qiladi, chunki ikkinchi argumentni birinchi argumentni o'tkazmasdan o'tkazib bo'lmaydi. Shuning uchun 3.4 birinchi argument sifatida uzatiladi. Birinchi argument int sifatida aniqlanganligi sababli, aslida o'tkaziladigan qiymat 3 hisoblanadi.

Misol: Standart argument

example.cpp
#include <iostream>
using namespace std;

// standart argumentlarni aniqlash
void display(char = '*', int = 3);

int main() {
    int count = 5;

    cout << "No argument passed: ";
    // *, 3 parametr bo'ladi
    display(); 
    
    cout << "First argument passed: ";
     // #, 3 parametrlar bo'ladi
    display('#'); 
    
    cout << "Both arguments passed: ";
    // $, 5 parametr bo'ladi
    display('

Chiqish

No argument passed: *** First argument passed: ### Both arguments passed: $$$$$

kod

Bu dastur qanday ishlaydi:

1.`display()` hech qanday argumentlarsiz chaqiriladi. Bunday holda, `display()` standart `c = '*'` va `n = 1` parametrlaridan foydalanadi.
2.`display('#')` faqat bitta argument bilan chaqiriladi. Bunday holda, birinchisi `'#'` ga aylanadi. Ikkinchi standart parametr `n = 1` saqlanib qolgan.
3.`display('#', count)` ikkala argument bilan ham chaqiriladi. Bunday holda, standart argumentlar ishlatilmaydi.

Funksiya ta'rifining o'zida standart parametrlarni ham belgilashimiz mumkin. Quyidagi dastur yuqoridagiga teng.

```cpp
#include <iostream>
using namespace std;

// standart argumentlarni aniqlash
void display(char c = '*', int count = 3) {
    for(int i = 1; i <= count; ++i) {
        cout << c;
    }
    cout << endl;
}

int main() {
    int count = 5;

    cout << "No argument passed: ";
    // *, 3 parametr bo'ladi
    display(); 
    
    cout << "First argument passed: ";
     // #, 3 parametrlar bo'ladi
    display('#'); 
    
    cout << "Both argument passed: ";
    // $, 5 parametr bo'ladi
    display('$', count); 

    return 0;
}

Eslash kerak bo'lgan narsalar

1.Parametr uchun standart qiymatni berganimizdan so'ng, barcha keyingi parametrlar ham standart qiymatlarga ega bo'lishi kerak. Masalan, // Yaroqsiz bekor qo'shish(int a, int b = 3, int c, int d); // noto'g'ri bekor qo'shish(int a, int b = 3, int c, int d = 4); // Valid void add(int a, int c, int b = 3, int d = 4); 2.Agar funksiya prototipi o'rniga funksiya ta'rifida standart argumentlarni aniqlayotgan bo'lsak, u holda funksiya funksiya chaqiruvidan oldin aniqlanishi kerak. // Kod noto'g'ri int main() { // funksiya chaqiruvini ko'rsatish(); } bekor displey (char c = '*', int count = 5) { // kod }

Shuningdek o'qing:

void display(char c, int count) { for(int i = 1; i <= count; ++i) { cout << c; } cout << endl; }

kod

Chiqish

No argument passed: *** First argument passed: ### Both arguments passed: $$$$$

kod

Bu dastur qanday ishlaydi:

1.`display()` hech qanday argumentlarsiz chaqiriladi. Bunday holda, `display()` standart `c = '*'` va `n = 1` parametrlaridan foydalanadi.
2.`display('#')` faqat bitta argument bilan chaqiriladi. Bunday holda, birinchisi `'#'` ga aylanadi. Ikkinchi standart parametr `n = 1` saqlanib qolgan.
3.`display('#', count)` ikkala argument bilan ham chaqiriladi. Bunday holda, standart argumentlar ishlatilmaydi.

Funksiya ta'rifining o'zida standart parametrlarni ham belgilashimiz mumkin. Quyidagi dastur yuqoridagiga teng.

```cpp
#include <iostream>
using namespace std;

// standart argumentlarni aniqlash
void display(char c = '*', int count = 3) {
    for(int i = 1; i <= count; ++i) {
        cout << c;
    }
    cout << endl;
}

int main() {
    int count = 5;

    cout << "No argument passed: ";
    // *, 3 parametr bo'ladi
    display(); 
    
    cout << "First argument passed: ";
     // #, 3 parametrlar bo'ladi
    display('#'); 
    
    cout << "Both argument passed: ";
    // $, 5 parametr bo'ladi
    display('$', count); 

    return 0;
}

Eslash kerak bo'lgan narsalar

1.Parametr uchun standart qiymatni berganimizdan so'ng, barcha keyingi parametrlar ham standart qiymatlarga ega bo'lishi kerak. Masalan, // Yaroqsiz bekor qo'shish(int a, int b = 3, int c, int d); // noto'g'ri bekor qo'shish(int a, int b = 3, int c, int d = 4); // Valid void add(int a, int c, int b = 3, int d = 4); 2.Agar funksiya prototipi o'rniga funksiya ta'rifida standart argumentlarni aniqlayotgan bo'lsak, u holda funksiya funksiya chaqiruvidan oldin aniqlanishi kerak. // Kod noto'g'ri int main() { // funksiya chaqiruvini ko'rsatish(); } bekor displey (char c = '*', int count = 5) { // kod }

Shuningdek o'qing: