Tham số, Đối số mặc định trong lập trình C++

Trong hướng dẫn này, chúng ta sẽ tìm hiểu các đối số mặc định của C ++ và cách làm việc của chúng với sự trợ giúp của các ví dụ.

Trong lập trình C ++, chúng ta có thể cung cấp các giá trị mặc định cho các tham số của hàm .

Nếu một hàm có các đối số mặc định được gọi mà không truyền đối số, thì các tham số mặc định sẽ được sử dụng.

Tuy nhiên, nếu các đối số được truyền trong khi gọi hàm, thì các đối số mặc định sẽ bị bỏ qua.

Hoạt động của các đối số mặc định

Cách hoạt động của các đối số mặc định trong C ++

Chúng ta có thể hiểu hoạt động của các đối số mặc định từ hình trên:

  1. Khi temp()được gọi, cả hai tham số mặc định đều được hàm sử dụng.
  2. Khi temp(6)được gọi, đối số đầu tiên sẽ trở thành 6 trong khi giá trị mặc định được sử dụng cho tham số thứ hai.
  3. Khi temp(6, -2.3)được gọi, cả hai tham số mặc định đều bị ghi đè, dẫn đến i = 6và f = -2.3.
  4. Khi temp(3.4)được truyền, hàm sẽ hoạt động theo cách không mong muốn vì không thể truyền đối số thứ hai mà không truyền đối số đầu tiên.

    Do đó, 3.4được chuyển làm đối số đầu tiên. Vì đối số đầu tiên đã được xác định là int, giá trị thực sự được truyền là 3.

Ví dụ: Đối số mặc định

#include <iostream>
using namespace std;

// defining the default arguments
void display(char = '*', int = 3);

int main() {
    int count = 5;

    cout << "No argument passed: ";
    // *, 3 will be parameters
    display(); 
    
    cout << "First argument passed: ";
     // #, 3 will be parameters
    display('#'); 
    
    cout << "Both arguments passed: ";
    // $, 5 will be parameters
    display('$', count); 

    return 0;
}

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

Đầu ra

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

Đây là cách chương trình này hoạt động:

  1. display()được gọi mà không truyền bất kỳ đối số nào. Trong trường hợp này, hãy display()sử dụng cả tham số mặc định c = '*'và n = 1.
  2. display('#')được gọi chỉ với một đối số. Trong trường hợp này, đầu tiên trở thành '#'. Tham số mặc định thứ hai n = 1được giữ lại.
  3. display('#', count)được gọi với cả hai đối số. Trong trường hợp này, các đối số mặc định không được sử dụng.

Chúng ta cũng có thể xác định các tham số mặc định trong chính định nghĩa hàm. Chương trình dưới đây tương đương với chương trình trên.

#include <iostream>
using namespace std;

// defining the default arguments
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 will be parameters
    display(); 
    
    cout << "First argument passed: ";
     // #, 3 will be parameters
    display('#'); 
    
    cout << "Both argument passed: ";
    // $, 5 will be parameters
    display('$', count); 

    return 0;
}

Những điều cần nhớ

  1. Khi chúng tôi cung cấp giá trị mặc định cho một tham số, tất cả các tham số tiếp theo cũng phải có giá trị mặc định. Ví dụ,// Invalid void add(int a, int b = 3, int c, int d); // Invalid void add(int a, int b = 3, int c, int d = 4); // Valid void add(int a, int c, int b = 3, int d = 4);
  2. Nếu chúng ta đang xác định các đối số mặc định trong định nghĩa hàm thay vì nguyên mẫu hàm, thì hàm phải được định nghĩa trước khi gọi hàm.// Invalid code int main() { // function call display(); } void display(char c = '*', int count = 5) { // code }








Gõ tìm kiếm nhanh...