कभी-कभी हम फंक्शन डिक्लेरेशन के अंत में कीवर्ड const मौजूद पाते हैं। इसका क्या अर्थ है?
इसका उपयोग करके एक फंक्शन को कॉन्स्टेंट बनाया जा सकता है। कॉन्स्टेंट फंक्शन का विचार यह है कि, जिन ऑब्जेक्ट्स से उन्हें कॉल किया जाता है, उनसे फंक्शन को मॉडिफाई नहीं किया जा सकता। हमारे प्रोग्राम में कॉन्स्टेंट फंक्शन्स का उपयोग करने की सिफारिश की जाती है।
कॉन्स्टेंट फंक्शन का उदाहरण
#include <iostream>
using namespace std;
class MyClass {
int value;
public:
MyClass(int val = 0) {
value = val;
}
int getVal() const {
// value = 10; // यह लाइन कंपाइल टाइम एरर देगी क्योंकि फंक्शन कॉन्स्टेंट है
return value;
}
};
int main() {
MyClass ob(80);
cout << "The value is: " << ob.getVal();
return 0;
}
आउटपुट
The value is: 80
महत्वपूर्ण बिंदु: कॉन्स्ट ऑब्जेक्ट्स और नॉन-कॉन्स्ट फंक्शन्स
कॉन्स्टेंट फंक्शन्स को किसी भी प्रकार के ऑब्जेक्ट्स से कॉल किया जा सकता है। लेकिन नॉन-कॉन्स्टेंट फंक्शन्स को कॉन्स्ट ऑब्जेक्ट्स से नहीं बुलाया जा सकता।
#include <iostream>
using namespace std;
class MyClass {
int value;
public:
MyClass(int val = 0) {
value = val;
}
int getVal() { // const नहीं है
return value;
}
};
int main() {
const MyClass ob(80);
cout << "The value is: " << ob.getVal(); // एरर!
return 0;
}
आउटपुट
[Error] passing 'const MyClass' as 'this' argument of 'int MyClass::getVal()' discards qualifiers
सारांश
constफंक्शन के अंत में: यह मेंबर फंक्शन को कॉन्स्ट बनाता है - यह ऑब्जेक्ट के डेटा मेंबर्स को मॉडिफाई नहीं कर सकता।- कॉन्स्ट ऑब्जेक्ट्स केवल कॉन्स्ट मेंबर फंक्शन्स को कॉल कर सकते हैं।
- यह कॉन्स्ट-करेक्टनेस सुनिश्चित करता है और कंपाइलर को ऑप्टिमाइज़ेशन में मदद करता है।
mutableकीवर्ड वाले मेंबर्स को कॉन्स्ट फंक्शन्स में मॉडिफाई किया जा सकता है।