What is Passing objects in C++ in Hindi

What is Passing objects in C++ in Hindi

C++ में Object Pass करना, Object को functions या methods के रूप में Transfer करने की प्रक्रिया को refer करता है

यह Object oriented programming
का एक मूलभूत पहलू है जो के Object भीतर मौजूद Data पर functions या methods को संचालित करने की अनुमति देता है
जब किसी Object को function या methods में Pass किया जाता है, तो Object की एक Copy आमतौर पर बनाई जाती है यह Duplicate बनाने जैसा है ताकि Original Object untouched रहे।

यद्यपि Objects की Copy बनाना कभी-कभी धीमा हो सकता है और बहुत अधिक मेमोरी का उपयोग कर सकता है खासकर यदि Object बड़ी या जटिल हो 

लेकिन Object की Copy बनाने से बचने की कुछ तरीके भी है और यह तरीका है कि C++ में Object को reference या pointer द्वारा Pass करने जैसे विकल्प का उपयोग करना

Methods to pass objects in C++ in Hindi

Objects को functions या merhods को Pass करने की निम्न विधियां हैं।
1) Pass by Value
2) Pass by Reference

Pass by Value

C++, में जब आप एक object को एक function को value के द्वारा pass करते है तब function, Object की एक copy को प्राप्त करता है

इसका मतलब है कि function के अंदर Object में किसी भी प्रकार का Modification, function के बाहर वास्तविक Object को प्रभावित नहीं 
करेगी
Program for passing objects to function by value  
#include<iostream> 
#include<string> 
using namespace std;

class Business {
    int year;
    double sales;

public:
    void getDetails() {
        cout << "Enter the year: ";
        cin >> year;
        cout << "Enter the sales: ";
        cin >> sales;
    }

    void displayInfo() const {
        cout << "Year: " << year << endl;
        cout << "Sales: " << sales << endl;
    }

    static void totalSales(Business s1, Business s2) {
        cout << "Total sales of the years: " << (s1.sales + s2.sales) << endl;
    }
};

int main() {
    Business s1, s2, s3;
    cout << "Details of 1st Year:" << endl;
    s1.getDetails();
    s1.displayInfo();

    cout << "Details of 2nd Year:" << endl;
    s2.getDetails();
    s2.displayInfo();
    s3.totalSales(s1, s2);
    return 0;
}
 
Output:
Details of 1st Year:
Enter the year: 2023
Enter the sales: 659800
Year: 2023
Sales: 659800
Details of 2nd Year:
Enter the year: 2024
Enter the sales: 569800
Year: 2024
Sales: 569800
Total sales of the years: 1.2296e+06

Explanation:

Object Creation: 
Main function में तीन Business objects (s1, s2, और s3) का निर्माण किया जाता है 

प्रत्येक object के पास अपने year और sales member variables को Store करने के लिए स्वयं की अलग से Memory space होती 

getDetails Call: 
जब s1.getDetails() और s2.getDetails() को Call किया जाता है तब Member functions Users को year और sales के लिए value, Enter करने के लिए प्रेरित करते हैं। ये value s1 और s2 object के संबंधित Member variable में Store होते हैं। 

Passing to totalSales:
main function के अंदर s3.totalSales(s1, s2); के द्वारा totalSales function को call किया जाता है

उसके बाद s1 और s2 Objects की copies को function को pass किया जाता है, original objects की नहीं
 
totalSales Function: 
चूंकि totalSales को value के अनुसार copies प्राप्त होती हैं, function के भीतर year या sales members में किए गए कोई भी संशोधन original s1 और s2 Object को प्रभावित नहीं करते हैं। 

function केवल Copies से sales values के Total की गणना करता है और उसे Print करता है।

Passing object by reference

C++, में आप reference के द्वारा objects को function को Pass कर सकते हैं इससे आपको पूरे Objects की Copy करने की आवश्यकता नहीं रहेगी क्योंकि बड़े Object की Copy करना अप्रभावी हो सकता है

Objects को function को reference द्वारा Pass करने से आप जरूरत के आधार पर function द्वारा Original Object को modify कर सकते हैं
एक Object को reference द्वारा पास करने के लिए reference operator & का उपयोग किया जाता है

Program for passing objects to function by reference
#include<iostream>
#include<string> 
using namespace std;

class myScore {
    int score;
public:
    void getDetails() {
        cout << "Enter the score: ";
        cin >> score;
    }

    void displayInfo() const {
        cout << "Score: " << score << endl;    
    }

    static void totalScore(const myScore& s1, const myScore& s2) {
        cout << "My total scores: " << (s1.score + s2.score) << endl;
    }
};

int main() {
    myScore s1, s2;
    cout << "My 1st score:" << endl;
    s1.getDetails();
    cout << "My 2nd score:" << endl;
    s2.getDetails();
    myScore::totalScore(s1, s2);
    return 0;
}
 
Output:
My 1st score:
Enter the score: 
78
My 2nd score:
Enter the score: 
86
My total scores: 164

Explanations:

1) Class को Define करना: 
`myScore` Class एक integer `score`, variable को रखता है जिसमे score की value को Store तथा display किया जाता है
 
2) Static Method with References: 
 `totalScore` method को`static` की तरह declare किया जाता है और वह  `const myScore& s1` और `const myScore& s2` को parameters, की तरह स्वीकार करता है

इसका अर्थ यह है कि यह `myScore` के objects को copy किए बिना उनके reference को प्राप्त करता है। 

3) Scores को प्राप्त करना
 `main` function, में दो `myScore` objects, `s1` और `s2`, का निर्माण किया जाता है.
और उसके scores को `getDetails` के माध्यम से user से Input लिया जाता है

4) Total Score की गणना करना:
 `totalScore` method को `s1` और `s2`(argument की तरह) के साथ call किया जाता है

चुकि method के parameters references है अतः यह सीधे ही total score को calculate करने के लिए उसकी copy किए बगैर original `s1` और `s2` objects के members के score को Access करता है 

5) Output:
 total score की गणना की जाती है और उसे print किया जाता है जो यह सूचित करता है कि `totalScore`इसे pass किए गए actual `myScore` objects पर operate करता है

Differences between passing an object to a function by value and by reference in C++:


1) By Value:
Object की एक Copy बनाई जाती है और function उस Copy के साथ कार्य करता है 
By Reference: 
function, original object के साथ कार्य करता है 

2) By Value: 
Object की copy को store करने के लिए अतिरिक्त memory की आवश्यकता होती है

By Reference: 
Copy करने के लिए अतिरिक्त memory की आवश्यकता नहीं होती है

3) By Value
बड़े Objects के लिए Copy करने की प्रक्रिया के कारण यह धीमा हो जाता है
 
By Reference:
यह तेज है क्योंकि इसमें Copy करना शामिल नहीं है 

4) By Value
function के अंदर होने वाले modification का प्रभाव original object पर नही पड़ता है

By Reference
function के अंदर होने वाले modification का प्रभाव original object पर पड़ता है

5) Pass by Value:
इसका उपयोग उस समय किया जाना चाहिए जब आप original object में कोई संशोधन नहीं चाहते और जब आपको function के अंदर Object के Copy की जरुरत है
    
Pass by Reference:
इसका उपयोग उस समय किया जाना चाहिए जब function को Original object में संशोधन की जरूरत है और जब आप बड़े Object के साथ कार्य कर रहे तथा आपको इसकी Copy की जरुरत नहीं है

6) Pass by Value:
सामान्यत: Original object, अपरिवर्तित होने के कारण उस पर दुष्प्रभावो की संभावना कम होती है 

Pass by Reference: 
यदि function अनजाने में Original object को संशोधित करता है और यदि इसका प्रभाव प्रोग्राम के अन्य भागों पर पड़े तो इसके दुष्प्रभाव हो सकते हैं

7) Pass by Value: 
function signatures में विशेष syntax की आवश्यकता नहीं होती है

Pass by Reference:
function signature में parameter के पहले एक reference operator (`&`) का Use किया जाता है

8) Pass by Value:
छोटे objects की Copy करना आमतौर पर सस्ता होता है जबकि बड़ी Objects की Copy बनाना धीमा हो सकता है

Pass by Reference:
इसमें कोई Copy शामिल नहीं है, इसलिए बड़ी Objects के लिए यह संभवत तेज है


9) Pass by Value:
Dubug करना आसान है क्योंकि परिवर्तन function की Copy के भीतर अलग से होता है

Pass by Reference:
यदि Original object में संशोधन के कारण दुष्प्रभाव उत्पन्न होता है तो Debug करना अधिक कठिन हो सकता है।

 Related Posts

> C++ क्या है? उसके इतिहास, गुण, उपयोग, फायदे और नुकसान 

> Basic structure of C++ Program 

> C++ में Tokens क्या है? और उसके प्रकार

> C++ Variables क्या है?, उसके प्रकार, उसे कैसे Declare, Define करते हैं

> C++ में Constants क्या है? उसके प्रकारों की संपूर्ण जानकारी

> C++ में Basic Input और Output (cin,cout,cerr) की जानकारी

> Data type in C++ की संपूर्ण जानकारी 

> C+ में Operators और उसके प्रकार जानें Practical सहित 

> C++ में Conditional और उसके प्रकारों को जानें Practical सहित 

> C++ में Looping statements और उसके प्रकार Practical सहित 

> C++ में Jump Statements और उसके प्रकारों की संपूर्ण जानकारी Practical सहित

> C++ में Array क्या है? और उसके प्रकारों की जानकारी Practical सहित

> C++ में Function क्या है उसके प्रकार, उपयोग प्रोग्राम सहित 

> C++ में Structure क्या है Practical सहित

> OOPs Concepts in C++ in Hindi- C++ में OOPs के बारे में

> Oops के फायदे और नुकसान की जानकारी 

> OOP और POP के बीच अंतर 

> C++ में Class और Object की सम्पूर्ण जनकारी

> C++ में Array of Objects क्या है? 

> C++ में Pointers, Pointer to an objects, Pointer to an Array की संपूर्ण जानकारी हिंदी में

> C++ में Reference और Type Casting की संपूर्ण जानकारी

> C++ में Access specifier की संपूर्ण जानकारी 

> C++ में Static Data Members और Member Functions के बारे में Practical सहित 

> C++ में Memory allocation और Memory management operators (new और delete) Practical सहित 

> Friend Function in C++ in Hindi 

> Friend Class in C++ in Hindi Practical सहित 

> Inline function in C++ in Hindi 

> Function Overloading in C++ in Hindi Practical सहित 

> Operator Overloading in C++ in Hindi Practical सहित 

> C++ में Constructor क्या है और उसके प्रकारों की संपूर्ण जानकारी

> C++ में Destructor क्या है ?उसकी संपूर्ण जानकारी

> C++ मे Inheritance क्या है उसके प्रकारों को जानें प्रोग्राम सहित

> C++ में Polymorphism क्या है? और उसके प्रकारों को जानें

> C++ में Virtual function की संपूर्ण जानकारी

> C++ में File handling की संपूर्ण जानकारी 

> C++ में Exception handling  की संपूर्ण जानकारी