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

Hàm ảo (virtual) có tham số mặc định trong C++


C++ cho phép hàm ảo có tham số mặc định. Giá trị mặc định được xác định tại **compile-time** dựa trên kiểu tĩnh của con trỏ/tham chiếu, không phải kiểu động của đối tượng.

Ví dụ

#include <iostream>
using namespace std;

class Base {
public:
    virtual void f(int a = 0) { cout << "Base: a=" << a << endl; }
};
class Derived : public Base {
public:
    void f(int a) override { cout << "Derived: a=" << a << endl; }
};

int main() {
    Derived d;
    Base *b = &d;
    b->f(); // Gọi Derived::f(0) - dùng default của Base
    return 0;
}

Kết quả

Derived: a=0

Lưu ý: Tham số mặc định không tham gia chữ ký hàm (signature). Hàm f(int) của Derived ghi đè f(int=0) của Base. Giá trị mặc định được thay thế tại compile-time theo kiểu tĩnh (Base*), còn hàm ảo được phân giải runtime.