Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tham số mặc định (Default Arguments) trong C++

Tham số mặc định cho phép gọi hàm với số lượng đối số ít hơn số tham số khai báo. Giá trị mặc định được sử dụng khi đối số tương ứng không được truyền.

Cú pháp

return_type function_name(type param = default_value);

Ví dụ cơ bản

#include <iostream>
using namespace std;

int sum(int x, int y, int z = 0, int w = 0) {
    return x + y + z + w;
}

int main() {
    cout << sum(10, 15) << endl;       // 25  (z=0, w=0)
    cout << sum(10, 15, 25) << endl;    // 50  (z=25, w=0)
    cout << sum(10, 15, 25, 30) << endl; // 80  (z=25, w=30)
    return 0;
}

Đầu ra

25
50
80

Quy tắc quan trọng

  1. Tham số mặc định phải ở cuối: Không thể có tham số không mặc định đứng sau tham số mặc định.
    // Sai:
    void f(int a = 1, int b); // Lỗi biên dịch
    
    // Đúng:
    void f(int a, int b = 1);
  2. Chỉ khai báo một lần: Thường đặt trong khai báo (header file), không lặp lại trong định nghĩa.
    
    // header.h
    void func(int a, int b = 10);
    
    // source.cpp
    void func(int a, int b) { ... } // Không viết = 10 ở đây
  3. Không dùng cho tham số của hàm ảo (virtual) nếu muốn hành vi đa hình đúng đắn (giá trị mặc định được xác định tại compile-time theo kiểu tĩnh, không phải kiểu động).

Ví dụ nâng cao

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

void greet(const string& name, const string& prefix = "Chào", const string& suffix = "!") {
    cout << prefix << " " << name << suffix << endl;
}

int main() {
    greet("An");                 // Chào An!
    greet("Bình", "Xin chào");   // Xin chào Bình!
    greet("Cường", "Hi", ".");   // Hi Cường.
    return 0;
}

Ứng dụng thực tế

  • Hàm cấu hình với nhiều tùy chọn (config functions).
  • Constructor với nhiều tham số tùy chọn.
  • Wrapper hàm API cũ để tương thích ngược.

Lưu ý hiệu năng

Tham số mặc định không gây overhead runtime - trình biên dịch thay thế giá trị tại điểm gọi (compile-time).