BCA / B.Tech 11 min read

Constant Member in Hindi

Constant Member in C++ in Hindi | C++ में कॉन्स्टेंट मेंबर :


C++ में, कॉन्स्टेंट मेंबर का उपयोग किसी डेटा मेंबर या फंक्शन को अपरिवर्तनीय (immutable) बनाने के लिए किया जाता है। इसका मतलब यह है कि एक बार मान (value) सेट हो जाने के बाद, 
उसे बदला नहीं जा सकता। यह प्रोग्रामिंग की एक महत्वपूर्ण अवधारणा है, जो उस स्थिति में उपयोगी होती है जहाँ किसी डेटा या फंक्शन की वैल्यू को प्रोग्राम के दौरान कभी नहीं बदला जाना चाहिए।

Type of Constant Member in C++ in Hindi | C++ में  कॉन्स्टेंट मेंबर के प्रकार :

C++ में दो प्रकार के कॉन्स्टेंट मेंबर होते हैं :

कॉन्स्टेंट डेटा मेंबर (Constant Data Member)
कॉन्स्टेंट मेंबर फंक्शन (Constant Member Function)


 Constant Data Member in C++ in Hindi | कॉन्स्टेंट डेटा मेंबर :

  • कॉन्स्टेंट डेटा मेंबर एक ऐसा डेटा मेंबर होता है जिसे const कीवर्ड का उपयोग करके परिभाषित किया जाता है, और इसकी वैल्यू को एक बार निर्धारित करने के बाद कभी नहीं बदला जा सकता। 
  • इसे केवल क्लास के कंस्ट्रक्टर में ही इनिशियलाइज़ किया जा सकता है। कॉन्स्टेंट डेटा मेंबर्स के द्वारा प्रोग्रामर यह सुनिश्चित कर सकता है कि किसी डेटा मेंबर की वैल्यू कभी बदलेगी नहीं।

विशेषताएँ :

  • कॉन्स्टेंट डेटा मेंबर को घोषित करते समय वैल्यू असाइन नहीं की जा सकती; इसे कंस्ट्रक्टर के अंदर इनिशियलाइज़ करना अनिवार्य है।
  • एक बार वैल्यू सेट हो जाने के बाद, इसे किसी भी फंक्शन द्वारा बदला नहीं जा सकता।
  • यह डेटा की सुरक्षा और स्थिरता सुनिश्चित करता है।

उदाहरण :

#include<iostream>
using namespace std;

class Circle {
private:
    const float PI;  // कॉन्स्टेंट डेटा मेंबर

public:
    Circle(float p) : PI(p) {  // कंस्ट्रक्टर में कॉन्स्टेंट डेटा मेंबर को इनिशियलाइज़ किया
        // PI = 3.14;  // Error: कॉन्स्टेंट मेंबर को कंस्ट्रक्टर के बाद नहीं बदला जा सकता
    }

    float getPI() const {
        return PI;
    }
};

int main() {
    Circle circle(3.14159);
    cout << "Value of PI: " << circle.getPI() << endl;
    // circle.PI = 3.15;  // Error: कॉन्स्टेंट डेटा मेंबर को बदला नहीं जा सकता
    return 0;
}

व्याख्या :

  • PI को const कीवर्ड के साथ घोषित किया गया है, जिससे यह कॉन्स्टेंट हो गया।
  • PI की वैल्यू को कंस्ट्रक्टर के माध्यम से इनिशियलाइज़ किया गया है। इसे बाद में बदला नहीं जा सकता।
  • main() में PI की वैल्यू को एक्सेस करने के लिए एक पब्लिक गेटर फ़ंक्शन getPI() का उपयोग किया गया है, लेकिन इसे बदला नहीं जा सकता।
  • निष्कर्ष: कॉन्स्टेंट डेटा मेंबर उन स्थितियों में उपयोग किए जाते हैं जब किसी वैल्यू को स्थायी रूप से सेट किया जाना चाहिए और पूरे प्रोग्राम के दौरान उसे बदलने की अनुमति नहीं होनी चाहिए।

Constant Member Function in C++ in Hindi | कॉन्स्टेंट मेंबर फंक्शन :

कॉन्स्टेंट मेंबर फंक्शन वह फंक्शन होता है जिसे const कीवर्ड के साथ डिक्लेयर किया जाता है। यह फंक्शन किसी भी डेटा मेंबर को बदलने की अनुमति नहीं देता। इसका उपयोग तब किया जाता है जब किसी फंक्शन के अंदर किसी भी डेटा मेंबर को अनजाने में बदलने से बचाना हो।

विशेषताएँ :

  • एक कॉन्स्टेंट मेंबर फंक्शन किसी भी नॉन-कॉन्स्टेंट डेटा मेंबर को संशोधित नहीं कर सकता।
  • इसे परिभाषित करने के लिए, फंक्शन प्रोटोटाइप और डेफिनिशन के अंत में const कीवर्ड का उपयोग किया जाता है।
  • यह केवल डेटा को पढ़ सकता है या एक्सेस कर सकता है, लेकिन उसे बदल नहीं सकता।

उदाहरण:

#include<iostream>
using namespace std;

class Rectangle {
private:
    int length;
    int width;

public:
    Rectangle(int l, int w) : length(l), width(w) {}

    // कॉन्स्टेंट मेंबर फंक्शन
    int getArea() const {
        // length++;  // Error: कॉन्स्टेंट फंक्शन में डेटा मेंबर को बदला नहीं जा सकता
        return length * width;
    }

    // नॉन-कॉन्स्टेंट मेंबर फंक्शन
    void setLength(int l) {
        length = l;
    }
};

int main() {
    Rectangle rect(10, 5);

    cout << "Area: " << rect.getArea() << endl;
    rect.setLength(15);
    cout << "New Area: " << rect.getArea() << endl;

    return 0;
}

व्याख्या :

  • getArea() को एक कॉन्स्टेंट मेंबर फंक्शन के रूप में परिभाषित किया गया है, और यह const कीवर्ड का उपयोग करता है। इसलिए, यह फंक्शन केवल length और width की वैल्यू को पढ़ सकता है, लेकिन उन्हें बदल नहीं सकता।
  • यदि आप getArea() फंक्शन के अंदर length को बदलने की कोशिश करेंगे, तो कंपाइलर एरर देगा।
  • निष्कर्ष: कॉन्स्टेंट मेंबर फंक्शन का उपयोग उन स्थितियों में किया जाता है जब हमें यह सुनिश्चित करना हो कि फंक्शन केवल डेटा को पढ़ेगा और उसे बदलेगा नहीं। यह डेटा को सुरक्षित रखने के लिए एक आवश्यक उपकरण है।

कॉन्स्टेंट ऑब्जेक्ट्स (Constant Objects)

C++ में, किसी ऑब्जेक्ट को भी कॉन्स्टेंट के रूप में घोषित किया जा सकता है। इसका मतलब है कि उस ऑब्जेक्ट के किसी भी डेटा मेंबर को बदला नहीं जा सकता। कॉन्स्टेंट ऑब्जेक्ट केवल कॉन्स्टेंट मेंबर फंक्शंस को ही कॉल कर सकते हैं।
 इसका उपयोग उन स्थितियों में किया जाता है जब हमें यह सुनिश्चित करना हो कि किसी ऑब्जेक्ट की वैल्यू प्रोग्राम के दौरान कभी नहीं बदलेगी।

उदाहरण:

#include<iostream>
using namespace std;

class Car {
private:
    int speed;

public:
    Car(int s) : speed(s) {}

    int getSpeed() const {
        return speed;
    }

    void setSpeed(int s) {
        speed = s;
    }
};

int main() {
    const Car myCar(100);  // कॉन्स्टेंट ऑब्जेक्ट

    cout << "Speed: " << myCar.getSpeed() << endl;

    // myCar.setSpeed(120);  // Error: कॉन्स्टेंट ऑब्जेक्ट में नॉन-कॉन्स्टेंट फंक्शन को कॉल नहीं कर सकते

    return 0;
}

व्याख्या :

  • myCar को const कीवर्ड के साथ घोषित किया गया है, जिससे यह एक कॉन्स्टेंट ऑब्जेक्ट बन गया है।
  • myCar केवल कॉन्स्टेंट मेंबर फंक्शन getSpeed() को ही कॉल कर सकता है, लेकिन setSpeed() जैसे नॉन-कॉन्स्टेंट मेंबर फंक्शन को कॉल करने की अनुमति नहीं है।
  • निष्कर्ष: कॉन्स्टेंट ऑब्जेक्ट का उपयोग तब किया जाता है जब हमें किसी ऑब्जेक्ट की स्थिरता सुनिश्चित करनी हो और उसकी वैल्यू को कभी न बदलने की आवश्यकता हो। कॉन्स्टेंट ऑब्जेक्ट केवल कॉन्स्टेंट मेंबर फंक्शंस को ही एक्सेस कर सकते हैं।

म्यूटेबल कीवर्ड (Mutable Keyword) :

C++ में, यदि हम चाहते हैं कि किसी कॉन्स्टेंट ऑब्जेक्ट के एक विशेष डेटा मेंबर को बदला जा सके, तो हम mutable कीवर्ड का उपयोग कर सकते हैं। 
म्यूटेबल डेटा मेंबर एक विशेष प्रकार का डेटा मेंबर होता है जो कॉन्स्टेंट फंक्शंस के अंदर भी बदला जा सकता है, भले ही ऑब्जेक्ट को const के रूप में घोषित किया गया हो।

उदाहरण :

#include<iostream>
using namespace std;

class Student {
private:
    string name;
    mutable int rollNumber;

public:
    Student(string n, int r) : name(n), rollNumber(r) {}

    void setRollNumber(int r) const {
        rollNumber = r;  // म्यूटेबल मेंबर को कॉन्स्टेंट फंक्शन के अंदर बदला जा सकता है
    }

    void display() const {
        cout << "Name: " << name << ", Roll Number: " << rollNumber << endl;
    }
};

int main() {
    const Student student("Rahul", 101);  // कॉन्स्टेंट ऑब्जेक्ट

    student.display();
    student.setRollNumber(102);  // म्यूटेबल मेंबर को बदलने की अनुमति है
    student.display();

    return 0;
}

व्याख्या :

  • rollNumber को mutable कीवर्ड के साथ घोषित किया गया है, जिससे यह कॉन्स्टेंट फंक्शन के अंदर भी बदला जा सकता है।
  • setRollNumber() फंक्शन एक कॉन्स्टेंट फंक्शन होते हुए भी rollNumber को बदल सकता है।
  • निष्कर्ष: mutable कीवर्ड का उपयोग तब किया जाता है जब हमें कॉन्स्टेंट ऑब्जेक्ट के कुछ विशेष डेटा मेंबर्स को बदलने की आवश्यकता होती है।