Avatar ·

क्या C++ में फ़ंक्शन पैरामीटर पर const सिग्नेचर और व्यवहार को प्रभावित करता है?

सभी को नमस्ते! मैंने C++ सीखना शुरू किया है और एक अजीब स्थिति का सामना किया है। जब मैं फ़ंक्शन लिखता हूं, तो मैं अक्सर पैरामीटर के लिए const का उपयोग करता हूं ताकि यह सुनिश्चित हो सके कि वे फ़ंक्शन के अंदर संशोधित न हों। उदाहरण के लिए:\n\n```cpp\nvoid print(const std::string& str) {\n std::cout << str << std::endl;\n}\n```\n\nलेकिन हाल ही में मैंने देखा कि अगर मैं बिना const के, लेकिन समान नाम और प्रकारों के साथ फ़ंक्शन घोषित करता हूं, तो कंपाइलर इसे ओवरलोडिंग नहीं मानता:\n\n```cpp\nvoid print(const std::string& str) { /* ... */ }\nvoid print(std::string& str) { /* ... */ } // यह ओवरलोडिंग है\nvoid print(std::string str) { /* ... */ } // और यह त्रुटि है या नहीं?\n```\n\nऐसा क्यों है? आखिरकार, पैरामीटर में const प्रकार का हिस्सा है। लेकिन मैंने सुना है कि वैल्यू द्वारा पास किए गए पैरामीटर के लिए, const सिग्नेचर को प्रभावित नहीं करता। क्या यह सच है? और क्या कोई...