Có thể cho một nhà xây dựng quá tải bằng cách nào đó gọi một hàm tạo khác trong lớp, tương tự như mã dưới đây không?Có một hàm tạo thuận tiện trong C++ không?
class A {
public:
A(std::string str) : m_str(str) {}
A(int i) { *this = std::move(A(std::to_string(i))); }
std::string m_str;
};
Mã trên hoạt động, nhưng tôi sợ rằng việc gọi hàm này trong hàm tạo có thể dẫn đến hành vi không xác định.
Nếu có thể bạn vui lòng giải thích lý do và cũng đề xuất giải pháp thay thế tốt hơn?
Thuật ngữ mà bạn đang tìm kiếm là "nhà xây dựng đại biểu". – nwp
Tại sao không 'A (int i): m_str (std :: to_string (i)) {} '? – CoryKramer
Đây là một ví dụ tối thiểu. Tôi muốn quá tải một constructor chấp nhận 7 tham số, 4 trong số đó có giá trị mặc định và tôi muốn tránh đặt rõ ràng các giá trị mặc định ở nhiều nơi. – Makaronodentro