C ++ có một tính năng (tôi không thể tìm ra tên riêng của nó), nó tự động gọi các hàm tạo khớp của các loại tham số nếu các loại đối số không phải là các đối số dự kiến.
Một ví dụ rất cơ bản về điều này là gọi một hàm mong đợi std::string
một const char*
đối số. Trình biên dịch sẽ tự động tạo mã để gọi hàm tạo thích hợp std::string
.
Tôi tự hỏi, nó có tệ cho khả năng đọc như tôi nghĩ không?
Đây là một ví dụ:
class Texture {
public:
Texture(const std::string& imageFile);
};
class Renderer {
public:
void Draw(const Texture& texture);
};
Renderer renderer;
std::string path = "foo.png";
renderer.Draw(path);
Điều đó có tốt không? Hay nó đi quá xa? Nếu tôi không nên làm điều đó, bằng cách nào đó tôi có thể khiến Clang hoặc GCC cảnh báo về điều đó không?