Trong đoạn mã sau:Trong C++, là một hàm tạo với chỉ các đối số mặc định là một hàm tạo mặc định?
struct Foo
{
Foo(int x=0);
};
Liệu các nhà xây dựng được tính là một constructor mặc định?
Trong đoạn mã sau:Trong C++, là một hàm tạo với chỉ các đối số mặc định là một hàm tạo mặc định?
struct Foo
{
Foo(int x=0);
};
Liệu các nhà xây dựng được tính là một constructor mặc định?
C++ 98 §12.1/5 (tôi nhấn mạnh):
Một constructor mặc định cho một lớp X là một constructor của X có thể được gọi mà không cần một cuộc tranh cãi. Nếu không có constructor do người dùng khai báo cho lớp X, thì hàm tạo mặc định được khai báo ngầm định.
Vì vậy, có, nó được tính là hàm tạo mặc định. See also.
Trình tạo mặc định được trình biên dịch tạo tự động khi bạn không xác định. Vì vậy, tôi muốn nói không, không phải vì bạn đã xác định nó – peacemaker
@peacemaker thực sự, một hàm tạo mặc định là một hàm tạo không có đối số – Matt
@peacemaker: Bạn đang bối rối mặc định như trong "được cung cấp theo mặc định" với mặc định như trong " được gọi theo mặc định ". Tiêu chuẩn này sử dụng thuật ngữ để chỉ thuật ngữ sau. –