C++ में Reference और Type Casting की संपूर्ण जानकारी
What is reference in C++ in Hindi
C++ में एक references एक variable के उपनाम की तरह होता है जो Data को Access करने के लिए दूसरा नाम देता है।
जब आप कोई reference बनाते हैं तो आप किसी पहले से मौजूद variable को refer करने के लिए अनिवार्य रूप से दूसरा नाम बना रहे होते हैं।
यदि आप reference का उपयोग करके Data को modify करते हैं तो यह सीधे Original variable को बदल देता है
इसी प्रकार यदि आप Original variable को Modify करते हैं तो परिवर्तन Reference के माध्यम से भी दिखाई देगा
इसलिए एक का उपयोग करके किया गया कोई भी परिवर्तन तुरंत दूसरे में भी दिखाई देता है यह एक ही चीज के दो अलग-अलग नाम रखने जैसा है एक को बदलने से दूसरा स्वचालित रूप से बदल जाता है क्योंकि वे मूल रूप से एक ही Data से जुड़े होते हैं
Creating references in C++ in Hindi - reference का निर्माण करना
reference का निर्माण ampersand symbol(&) का Use करके किया जाता है इस symbol की मदद से आसानी से Variable को Reference की तरह पहचाना जा सकता हैं।
Syntax:
data-type& referenceName = existingVariable;
ऊपर Syntax में
data-type:
variable के Data type को निर्दिष्ट करता है
referenceName:
reference के name को निर्दिष्ट करता है
existingVariable:
उस variable को निर्दिष्ट करता है जिसके लिए reference बनाया जाता है
Example:
double sum;
double &total = sum;
ऊपर के Example में sum, Original variable है जिसका reference, total को बनाया गया है अब आप sum variable के बदले total reference का Use कर सकते हैं
Program to show use of reference
#include<iostream>
using namespace std;
int main() {
int a = 15;
int &b = a;
cout<<"Value of a:"<<a<<endl;
cout<<"Value of b:"<<b<<endl;
b= 20;
cout<<"Value of b after changing:"<<b<<endl;
cout<<"Value of a after changing :"<<a<<endl;
return 0;
}
Output:
Value of a:15
Value of b:15
Value of b after changing: 20
Value of a after changing : 20
Explanation:
ऊपर Program को निम्न प्रकार से समझते हैं
1) Variable को Declare करना:
int a = 15;
एक Integer variable को declare किया जाता है और उसे 15 value assign कर Initialize करते है
2) Reference का निर्माण करना:
int &b = a;
एक reference variable, b का निर्माण किया जाता है जो a के समान Memory location को refer करता है
यह a के लिए उपनाम का निर्माण करने के समान है
3) Value access करना:
cout << "Value of a:" << a << endl; और cout << "Value of b:" << b << endl;
a और b की value को print करता है जो की 15 हो जाएगा क्योंकि वे दोनों एक ही Memory location को point करते है
4) Reference केद्वारा Modify करना:
b = 20;
b द्वारा Refer किए जा रहे Memory location को 20 value assign करते है चूकि b, a का एक reference है इसलिए यह प्रभावी रूप से a के मान को भी Modify करता है।
5) Modify किए गए Value को Print करना:
cout << "Value of b after changing:" << b << endl;
b की value जो कि अब 20 है, print करता है तथा
cout << "Value of a after changing :" << a << endl;
a की Value जो कि अभी 20 ही है, को print करता है जो reference के माध्यम से किए गए परिवर्तन को दर्शाते है
संक्षेप में, reference पहले से मौजूद variable को Access करने और Modify करने का एक वैकल्पिक तरीका प्रदान करते हैं।
वे Variable के Memory location के साथ Interact करने का अधिक सीधा तरीका प्रदान करते हैं।
Program to show use of reference
#include<iostream>
using namespace std;
int main() {
double sum;
double &total = sum;
sum = 50000;
cout<<"Total: "<<total<<endl; cout<<"Sum:"<<sum<<endl;
//First change
sum = sum+ 30000;
cout<<"After 1st change value of total:"<<total<<endl;
cout<<"After 1st change value of sum:"<<sum<<endl;
//Second change
total = 0;
cout<<"After 2nd change value of total:"<<total<<endl;
cout<<"After 2nd change value of sum:"<<sum<<endl;
return 0;
}
Output:
Total: 50000
Sum:50000
After 1st change value of total: 80000
After 1st change value of sum:80000
After 2nd change value of total: 0
After 2nd change value of sum:0
Differences between references and pointer in Hindi
1)
Pointer:
अन्य variable के Memory address को store करते है
Reference:
Reference अन्य पहले से मौजूद variable के लिए उपनाम की तरह कार्य करता है परंतु स्वयं का Address स्टोर नहीं करता
2)
Pointer:
यह Null हो सकता है जो यह सूचित करता है कि यह कोई valid memory location को point नहीं कर रहा है
Reference:
यह null नही हो सकता
इसमें किसी valid object का reference होना चाहिए
3)
Pointer:
`*` operator का Use करके Define किया जाता है
Example int *ptr
Reference:
`&` operator का Use करके Define किया जाता है
4)
Pointer:
Memory location पर Value को Access करने के लिए इसे Reference की ओर point करने के लिए Dereferencing operator * की आवश्यकता होती है
Reference:
इसे एक सामान्य variable की तरह सीधे ही Access किया जाता है dereferencing की आवश्यकता नही होती
5)
Pointer:
पूरे Program में विभिन्न Memory locations को point करने के लिए पुन: असाइन किया जा सकता है
Reference:
इसे Initialize करने के बाद किसी भिन्न variable को refer करने के लिए पुन: असाइन किया जा सकता है
6)
Pointer:
इसका उपयोग functions को value या reference के द्वारा arugements pass करने के लिए हो सकता है
Reference:
Function arguments को reference के द्वारा & operator का Use करके pass किया जा सकता है ताकि सीधे ही original variable में संशोधन किया जा सके
7)
Pointer:
यह Pointer arithmetic जैसे ptr++`, `ptr + 1` को support करता है
Reference:
यह Arithmetic operations को support नही करता है
Type casting/Type conversion in C++ in Hindi
C++ में Type casting एक Value को एक Data type से दूसरे मे Convert करने का Mechanism है
यह सुनिश्चित करने में मदद करता है कि विभिन्न प्रकार के Variables के बीच Operations को सही ढंग से नियंत्रित किया जाता है
C++ में Type casting के प्रकार
Type casting के निम्न प्रकार होते है
Implicit Casting:
Implicit Casting को Automatic conversion के नाम से भी जाना जाता है Implicit Casting तब होती है जब Compiler बिना कुछ किए स्वचालित रूप से एक Variable को एक प्रकार से दूसरे प्रकार में बदल देता है।
Implicit casting आपके Code को सरल और पढ़ने मेंआसान बनाता है क्योंकि आपको इसे Manually बदलने की आवश्यकता नही है
हालाँकि, आपको सावधान रहने की आवश्यकता है क्योंकि स्वचालित परिवर्तन कभी-कभी अप्रत्याशित परिणाम दे सकते हैं
Program for Implicit Casting from integer to double
#include<iostream>
using namespace std;
int main() {
int p= 7;
float q = 3.0;
float result = p/q;
cout << "Result of division: " << result << endl;
return 0;
}
Output:
Result of division: 2.33333
Explanation:
1) Variable Declare करना:
int p= 7;
float q = 3.0;
एक `int` variable `p` तथा एक `double` variable q को Declare कर दोनों को Value assign किया जाता है
2) Division के दौरान Implicit Casting :
- `float result = p / q;`: `p / q` expression में, एक `int` को एक `float`द्वारा Divide किया जाता है
C++, मे जब एक `int` को एक `float`से divide किया जाता है , यह सुनिश्चित करने के लिए कि Division सही ढंग से किया गया है, int को स्पष्ट रूप से `float` में बदला जाता है।
इसलिए `p` जिसकी value `7` है उसका implicitly cast `7.0f`, हो जाता है
अर्थात कुछ इस तरह का expression `7.0f / 3.0f`
Division का result एक `float` value, है जिसे `result` variable को assign किया जाता है
3) Output:
cout << "Result of division: " << result << endl;`:
अंत मे Console में result को print किया जाता है
Example Output:
Result of division: 2.33333
Program for Implicit Casting in Mixed-Type Expressions
#include<iostream>
using namespace std;
int main() {
char myLetter = 'C';
// ASCII value of 'C' is 67
int result = myLetter + 1;
cout << "Result: " << result << endl;
return 0;
}
Output:
Result: 68
Explanation:
एक `char` variable `myLetter` है जिसकी Value `'C'` है (ASCII value 67) का Use एक Addition operation में किया गया है
Compiler `myLetter` में 1 जोड़ने के पहले उसे `एक `int` में implicitly convert कर देता है जिससे result `68` मिलता है
Explicit Casting
Explicit Casting में आप cast operator का उपयोग करके Compiler को एक Value को, एक Data type से दूसरे में परिवर्तित करने के लिए Manually निर्देश देते हैं।
इसका उपयोग करना उस समय अच्छा होता है जब आप विभिन्न Data types के साथ गणना करना चाहते हैं या आपको conversion process पर अधिक नियंत्रण की आवश्यकता होती है।
Program for Explicit Casting
#include<iostream>
using namespace std;
int main() {
float myNum = 6.78;
int result;
result= int(myNum);
cout<<"Result: "<<result<<endl;
return 0;
}
Output:
Result: 6
Explaination:
ऊपर Program में floating-point variable myNum को explicitly, एक integer बदलने के लिए Compiler को निर्देशित किया गया है
Types of Explicit Casting in C++ in Hindi
C++ में Explicit casting मुख्यत: 3 प्रकार के होते हैं
जो निम्न है
1) Static Cast
यह सबसे सामान्य प्रकार का Explicit cast है जो यह मानते हुए कि Conversion valid है, एक Compiler को सीधे ही एक Value को एक Data type से अन्य Data type में Convert करने को कहता है।
2) Dynamic Cast
C++ में इसका उपयोग मुख्य रूप से Object-oriented programming (OOP) में किया जाता है। यह आपको Base class object, के Pointers या References को Pointer या Derived class objects के References में सुरक्षित रूप से परिवर्तित करने की अनुमति देता है।
सरल शब्दों मे कहे तो
Dynamic Cast आपको Runtime पर Base class से Pointer या Reference को Derived class में सुरक्षित रूप से जांचने और परिवर्तित करने में मदद करता है।
3) Reinterpret Cast
Reinterpret Cast , C++ में एक प्रकार का Casting operator जो आपको किसी भी Pointer type को किसी अन्य Pointer type में परिवर्तित करने की अनुमति देता है, भले ही प्रकार पूरी तरह से एक दूसरे से संबंधित नही है ।
reinterpret_cast को low level cast माना जाता है क्योंकि यह किसी भी प्रकार की सुरक्षा को अनदेखा करता है, यदि गलत तरीके से उपयोग किया जाता है तो reinterpret_cast गंभीर त्रुटियों का कारण बन सकता है।
इसका उपयोग केवल तभी किया जाना चाहिए जब आप पूरी तरह से समझते हों कि आप क्या कर रहे हैं और आपको इसकी आवश्यकता क्यों है।
Advantages of Type casting in C++ in Hindi
1) Type casting, विभिन्न Data types के साथ कार्य करना आसान बनाता है
2) यह आपको Memory को बचाने मे मदद करता है
3) Type casting आवश्यक है जबआप C++ के साथ C libraries या APIs का Use कर रहे होते हैं जो आपको C Code में अपेक्षित प्रकारों से मेल खाने के लिए Data types को परिवर्तित करने की अनुमति देता है।
4) Object-oriented programming, में Type casting आपको Base और Derived classes के बीच Polymorphism Use करने की अनुमति देता है जो आपके Code को ज्यादा लचीला और पुन: उपयोग करने की अनुमति देता है
5) Type casting यह सुनिश्चित करता है कि Mathematical operations जैसे Integers को float में सही ढंग से Convert किया गया है ताकि सही परिणाम प्राप्त किया जा सके
6)Type Casting Argument को आपेक्षित प्रकार मे convert करने के द्वारा सही Overloaded function चुनने में मदद करता है
7) जब आप Hardware के साथ कार्य करते हुए Type casting आपको Raw Data के साथ सही तरीके से interpret करने की अनुमति देता है
8) जहां असुरक्षित Type casts, risky, है वहीं C++ सुरक्षित Type cast जैसे `static_cast` और `dynamic_cast` offer करता है जो Compile time या Runtime पर Type की शुद्धता सुनिश्चित करने में मदद करता है।
0 टिप्पणियाँ