Objects as Function Arguments
Passing whole objects into functions, by value or by reference.
Objects as Function Arguments
C++ में किसी function को argument के रूप में केवल सामान्य variables ही नहीं, बल्कि objects भी pass किए जा सकते हैं। जब किसी class के object को function में argument के रूप में भेजा जाता है, तो उस function को उस object के data members और member functions के साथ काम करने की सुविधा मिलती है।
Why Pass Objects to Functions?
जब किसी program में दो या अधिक objects के data की तुलना, calculation या processing करनी हो, तब objects को function arguments के रूप में pass करना उपयोगी होता है। इससे related operations को एक ही function में organize किया जा सकता है।
उदाहरण के लिए, यदि दो students के marks की तुलना करनी है, तो दोनों Student objects को एक function में pass किया जा सकता है।
Passing an Object as an Argument
किसी object को function में pass करने के लिए function के parameter list में class name के साथ object का parameter define किया जाता है।
सामान्य syntax:
ReturnType functionName(ClassName objectName)
{
// Function body
}
यहाँ ClassName उस class का नाम है जिसका object function में pass किया जा रहा है।
Simple Example
निम्न program में एक Student object को function में argument के रूप में pass किया गया है:
#include <iostream>
using namespace std;
class Student
{
public:
int marks;
};
void display(Student s)
{
cout << "Marks: " << s.marks;
}
int main()
{
Student s;
s.marks = 85;
display(s);
return 0;
}
Marks: 85
यहाँ s Student class का object है जिसे display() function में argument के रूप में pass किया गया है। Function में प्राप्त object s के data member marks को access किया गया है।
Passing Two Objects to a Function
एक function में एक से अधिक objects को arguments के रूप में pass किया जा सकता है। यह तब उपयोगी होता है जब दो objects के data की तुलना या calculation करनी हो।
#include <iostream>
using namespace std;
class Student
{
public:
int marks;
};
void compare(Student s1, Student s2)
{
if (s1.marks > s2.marks)
cout << "Student 1 has higher marks";
else if (s2.marks > s1.marks)
cout << "Student 2 has higher marks";
else
cout << "Both have equal marks";
}
int main()
{
Student s1, s2;
s1.marks = 85;
s2.marks = 92;
compare(s1, s2);
return 0;
}
Student 2 has higher marks
यहाँ s1 और s2 दोनों objects को compare() function में arguments के रूप में pass किया गया है।
Object Passed by Value
जब object को सामान्य parameter की तरह function में pass किया जाता है, तो object की एक copy function के parameter में प्राप्त होती है। इसे Pass by Value कहा जाता है।
#include <iostream>
using namespace std;
class Number
{
public:
int value;
};
void change(Number n)
{
n.value = 100;
}
int main()
{
Number num;
num.value = 50;
change(num);
cout << "Value: " << num.value;
return 0;
}
Value: 50
यहाँ change() function में object की copy pass हुई है। इसलिए function के अंदर n.value बदलने से original object num की value नहीं बदली।
Object Passed by Reference
Object को reference के रूप में भी function में pass किया जा सकता है। इसके लिए parameter के साथ & symbol का उपयोग किया जाता है। इसमें function original object के साथ काम करता है।
#include <iostream>
using namespace std;
class Number
{
public:
int value;
};
void change(Number &n)
{
n.value = 100;
}
int main()
{
Number num;
num.value = 50;
change(num);
cout << "Value: " << num.value;
return 0;
}
Value: 100
यहाँ Number &n reference parameter है। इसलिए n और num एक ही object को refer करते हैं और function के अंदर किया गया change original object में दिखाई देता है।
Passing Object by Value vs Reference
| Pass by Value | Pass by Reference |
|---|---|
| Object की copy function में pass होती है। | Original object का reference pass होता है। |
| Function में किए गए changes original object को प्रभावित नहीं करते। | Function में किए गए changes original object को प्रभावित कर सकते हैं। |
| Parameter में सामान्य class object लिखा जाता है। | Parameter में reference operator (&) का उपयोग किया जाता है। |
| Copy बनाने के कारण बड़े objects के लिए अतिरिक्त overhead हो सकता है। | Object की copy की आवश्यकता नहीं होती। |
Passing a Const Object Reference
यदि function को object की information केवल read करनी हो और original object को modify नहीं करना हो, तो object को const reference के रूप में pass किया जा सकता है।
#include <iostream>
using namespace std;
class Student
{
public:
int marks;
};
void display(const Student &s)
{
cout << "Marks: " << s.marks;
}
int main()
{
Student s;
s.marks = 88;
display(s);
return 0;
}
Marks: 88
यहाँ const reference का उपयोग किया गया है। Function object के data को read कर सकता है, लेकिन उसके data members को modify नहीं कर सकता।
Comparing Objects Using a Function
Objects को function arguments के रूप में pass करके उनके data members की तुलना की जा सकती है।
#include <iostream>
using namespace std;
class Rectangle
{
public:
int length;
int breadth;
int area()
{
return length * breadth;
}
};
void compareArea(Rectangle r1, Rectangle r2)
{
if (r1.area() > r2.area())
cout << "First rectangle has larger area";
else if (r2.area() > r1.area())
cout << "Second rectangle has larger area";
else
cout << "Both rectangles have equal area";
}
int main()
{
Rectangle r1, r2;
r1.length = 10;
r1.breadth = 5;
r2.length = 6;
r2.breadth = 7;
compareArea(r1, r2);
return 0;
}
First rectangle has larger area
यहाँ दोनों Rectangle objects को compareArea() function में pass किया गया है। Function ने दोनों objects के area() member function की सहायता से उनके areas की तुलना की।
Object as an Argument to a Member Function
किसी class का member function भी उसी या किसी अन्य class के object को parameter के रूप में accept कर सकता है।
#include <iostream>
using namespace std;
class Number
{
public:
int value;
void add(Number n)
{
cout << "Sum: " << value + n.value;
}
};
int main()
{
Number n1, n2;
n1.value = 20;
n2.value = 30;
n1.add(n2);
return 0;
}
Sum: 50
यहाँ add() एक member function है जो Number class के दूसरे object n2 को argument के रूप में accept करता है।
Function Returning an Object
C++ में function object को केवल argument के रूप में accept ही नहीं करता, बल्कि object को return भी कर सकता है। यह Object-Oriented Programming में एक महत्वपूर्ण feature है।
#include <iostream>
using namespace std;
class Number
{
public:
int value;
};
Number add(Number a, Number b)
{
Number result;
result.value = a.value + b.value;
return result;
}
int main()
{
Number n1, n2, sum;
n1.value = 20;
n2.value = 30;
sum = add(n1, n2);
cout << "Sum: " << sum.value;
return 0;
}
Sum: 50
इस program में add() function दो Number objects को arguments के रूप में लेता है और एक Number object को result के रूप में return करता है।
Advantages of Passing Objects to Functions
- Objects के data पर operations करना आसान होता है।
- दो या अधिक objects की तुलना आसानी से की जा सकती है।
- Complex data को एक single argument के रूप में pass किया जा सकता है।
- Program में code reuse और modularity बढ़ती है।
- Object-oriented programs को अधिक organized बनाया जा सकता है।
- Large objects को reference के माध्यम से efficiently pass किया जा सकता है।
Important Points
- C++ में objects को functions में arguments के रूप में pass किया जा सकता है।
- Object को value द्वारा pass करने पर उसकी copy function में प्राप्त होती है।
- Object को reference द्वारा pass करने के लिए & operator का उपयोग किया जाता है।
- Reference द्वारा pass किए गए object में किए गए changes original object को प्रभावित कर सकते हैं।
- const reference का उपयोग object को modify किए बिना efficiently pass करने के लिए किया जा सकता है।
- एक function में multiple objects arguments के रूप में pass किए जा सकते हैं।
- Member function भी objects को arguments के रूप में accept कर सकता है।
- Function किसी object को return भी कर सकता है।
Board Focus
Object as Argument → Object को function में pass करना
Pass by Value → Object की copy pass होती है
Pass by Reference → Original object का reference pass होता है
Reference Symbol → &
Const Reference → Object को modify किए बिना reference से pass करना
Multiple Objects → एक function में कई objects pass किए जा सकते हैं
Return Object → Function object को return भी कर सकता है
Board Important Questions
Very Short Answer Questions
Q1. क्या C++ में object को function argument के रूप में pass किया जा सकता है?
Answer: हाँ, C++ में object को function argument के रूप में pass किया जा सकता है।
Q2. Object को function में pass करने का क्या अर्थ है?
Answer: किसी class के object को function के parameter के रूप में भेजना object passing कहलाता है।
Q3. Object को reference द्वारा pass करने के लिए किस symbol का उपयोग होता है?
Answer: Ampersand (&) symbol.
Q4. Object को value द्वारा pass करने पर क्या pass होता है?
Answer: Object की एक copy function में pass होती है।
Q5. क्या function किसी object को return कर सकता है?
Answer: हाँ, C++ में function किसी object को return कर सकता है।
Short Answer Questions
Q6. Object को function argument के रूप में कैसे pass किया जाता है?
Answer: Function के parameter में class name के साथ object parameter define करके object को function argument के रूप में pass किया जाता है।
void display(Student s)
{
cout << s.marks;
}
इसके बाद object को function call के समय argument के रूप में pass किया जाता है:
Student s;
display(s);
Q7. Pass by Value और Pass by Reference में अंतर बताइए।
| Pass by Value | Pass by Reference |
|---|---|
| Object की copy pass होती है। | Original object का reference pass होता है। |
| Original object सामान्यतः modify नहीं होता। | Original object modify हो सकता है। |
| Reference operator की आवश्यकता नहीं होती। | & operator का उपयोग किया जाता है। |
Q8. Object को const reference के रूप में क्यों pass किया जाता है?
Answer: Object को const reference के रूप में pass करने से उसकी copy बनाए बिना function में object की information read की जा सकती है और function object को modify नहीं कर सकता।
Q9. एक function में दो objects कैसे pass किए जा सकते हैं?
Answer: Function में class type के दो parameters define करके दो objects को arguments के रूप में pass किया जा सकता है।
void compare(Student s1, Student s2)
{
// Statements
}
compare(s1, s2);
Long Answer Questions
Q10. Objects को function arguments के रूप में उदाहरण सहित समझाइए।
Answer: C++ में किसी class के object को function के argument के रूप में pass किया जा सकता है। Function के parameter में class type का object define किया जाता है। Object को value या reference के रूप में pass किया जा सकता है।
#include <iostream>
using namespace std;
class Student
{
public:
int marks;
};
void display(Student s)
{
cout << "Marks: " << s.marks;
}
int main()
{
Student s;
s.marks = 95;
display(s);
return 0;
}
Marks: 95
इस program में Student object s को display() function में argument के रूप में pass किया गया है।
Q11. Object को reference द्वारा pass करने का उदाहरण दीजिए।
#include <iostream>
using namespace std;
class Number
{
public:
int value;
};
void update(Number &n)
{
n.value = 200;
}
int main()
{
Number n;
n.value = 50;
update(n);
cout << "Value: " << n.value;
return 0;
}
Value: 200
यहाँ object n को reference के रूप में pass किया गया है। इसलिए update() function में किया गया change original object में भी दिखाई देता है।
Q12. दो objects को function में pass करके उनकी values का sum निकालने का C++ program लिखिए।
#include <iostream>
using namespace std;
class Number
{
public:
int value;
};
int add(Number n1, Number n2)
{
return n1.value + n2.value;
}
int main()
{
Number a, b;
a.value = 25;
b.value = 35;
cout << "Sum: " << add(a, b);
return 0;
}
Sum: 60
Q13. क्या function object को return कर सकता है? उदाहरण सहित समझाइए।
Answer: हाँ, C++ में function किसी class के object को return कर सकता है। Function का return type संबंधित class type होता है।
Number add(Number a, Number b)
{
Number result;
result.value = a.value + b.value;
return result;
}
यहाँ add() function Number type का object return करता है।
Q14. Objects को functions में pass करने के क्या advantages हैं?
Answer: Objects को functions में pass करने से complex data को एक unit के रूप में process करना आसान होता है। इससे objects की comparison और calculation की जा सकती है तथा program को modular और reusable बनाया जा सकता है। बड़े objects को reference द्वारा pass करके unnecessary copying से भी बचा जा सकता है।
Quick Revision
- Object as Argument: Object को function में pass करना
- Pass by Value: Object की copy pass होती है
- Pass by Reference: Original object का reference pass होता है
- Reference Operator: &
- Const Reference: Object को read-only reference के रूप में pass करना
- Multiple Objects: एक function में कई objects pass किए जा सकते हैं
- Return Object: Function object को return कर सकता है
Practice Questions
- Object as Function Argument क्या है?
- Object को function में pass करने का syntax लिखिए।
- Object Passing by Value क्या है?
- Object Passing by Reference क्या है?
- Object को reference द्वारा pass करने के लिए किस operator का उपयोग होता है?
- Pass by Value और Pass by Reference में अंतर बताइए।
- const reference का उपयोग object passing में क्यों किया जाता है?
- एक function में दो objects कैसे pass किए जाते हैं?
- दो Student objects की marks की तुलना करने का C++ program लिखिए।
- Object को reference द्वारा pass करके उसके data member को modify करने का program लिखिए।
- दो objects को function में pass करके उनका sum calculate करने का program लिखिए।
- क्या C++ में function object return कर सकता है? उदाहरण सहित समझाइए।
- एक Rectangle class के दो objects को function में pass करके उनके areas की तुलना करने का program लिखिए।