C++ में explicit कीवर्ड का क्या अर्थ है? इसका उपयोग कब और क्यों करें?
सभी को नमस्कार! मैंने अभी-अभी C++ सीखना शुरू किया है और `explicit` कीवर्ड पर ध्यान गया। मैं समझ गया कि इसका उपयोग कंस्ट्रक्टर से पहले किया जाता है, लेकिन मुझे पूरी तरह से समझ नहीं आया कि इसकी आवश्यकता क्यों है और किन मामलों में इसका उपयोग करना चाहिए।
मेरे पास वेक्टर के साथ काम करने के लिए एक सरल क्लास है:
```cpp
class Vector {
public:
Vector(int size) {
data = new int[size];
sz = size;
}
private:
int* data;
int sz;
};
```
मैं ऐसा कोड लिख सकता हूँ:
```cpp
Vector v = 10; // यह क्यों काम करता है?!
```
कंपाइलर इसे बिना किसी त्रुटि के कंपाइल करता है। लेकिन क्या `10` एक संख्या नहीं है? यह अचानक Vector ऑब्जेक्ट में कैसे बदल जाता है? क्या यह कोई इम्प्लिसिट कन्वर्ज़न है? मुझे यह खतरनाक लगता है, क्योंकि मैं गलती से वहाँ एक संख्या पास कर सकता हूँ जहाँ ऑब्जेक्ट की अपेक्षा की जाती है, और प्रोग्राम अजीब व्यवहार करेगा।
उदाहरण के लिए, अगर मेरे पास एक फंक्शन है:
```cpp
void processVector(Vector v) { /* ... */ }
int main() {
processVector(42); // त्रुटि? या नहीं? अभी यह काम करता है!
return 0;
}
```
मुझे