C ++ में एक सुविधा है (मैं इसका सही नाम नहीं बता सकता), जो कि तर्क प्रकारों के स्वचालित रूप से कॉल करता है यदि तर्क प्रकार अपेक्षित व्यक्ति नहीं हैं।
इसका एक बहुत ही मूल उदाहरण एक फ़ंक्शन को बुला रहा है जो std::string
एक const char*
तर्क के साथ अपेक्षा करता है । संकलक स्वचालित रूप से उपयुक्त std::string
निर्माता को लागू करने के लिए कोड उत्पन्न करेगा ।
मैं सोच रहा हूं, क्या यह पठनीयता के लिए उतना ही बुरा है जितना मुझे लगता है कि यह है?
यहाँ एक उदाहरण है:
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);
क्या यह ठीक है? या यह बहुत दूर जाता है? अगर मुझे ऐसा नहीं करना चाहिए, तो क्या मैं किसी तरह से क्लेंग या जीसीसी को इसके बारे में चेतावनी दे सकता हूं?