6.5.9 Hàm khởi tạo mặc định – default constructors (3)

Ví dụ sau →

là hoàn toàn OK và có thể được biên dịch thành công.

WTF ??? Chúng mình có thêm hàm khởi tạo méo đâu ? Thề.

Nhưng các bạn hãy nhìn kĩ lại xem, constructor 2 tham số ở ví dụ trước đã được thay đổi bằng cách thêm các giá trị mặc định cho cả hai tham số. Và khi đó, một lời gọi như thế này

WithConstructor ()

vẫn là hợp lệ ngay cả khi không thể tìm thấy constructor không có tham số trong class.

Trình biên dịch sẽ tìm một ứng viên tương thích khác cho lời gọi và sẽ tìm thấy nó. Trình biên dịch giả định rằng lời gọi bên trên tương đương với lời gọi sau đây:
WithConstructor (0, 0.0)

Chương trình trên sẽ biên dịch thành công và chạy ra kết quả sau: