C ++ memiliki fitur (saya tidak tahu nama yang tepat), yang secara otomatis memanggil konstruktor yang cocok dari tipe parameter jika tipe argumen bukan yang diharapkan.
Contoh yang sangat mendasar dari hal ini adalah memanggil fungsi yang mengharapkan a std::string
dengan const char*
argumen. Kompiler akan secara otomatis menghasilkan kode untuk memanggil std::string
konstruktor yang sesuai .
Saya bertanya-tanya, apakah buruk untuk keterbacaan seperti yang saya kira?
Ini sebuah contoh:
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);
Apakah itu baik-baik saja? Atau apakah itu terlalu jauh? Jika saya tidak melakukannya, bisakah saya membuat Dentang atau GCC memperingatkan tentang hal itu?