Member Access Operator: अभी तक हमने देखा है कि किसी Object के Members को यदि Access करना हो, तो Object के साथ Dot Operator का प्रयोग किया जाता है। लेकिन जब एक Pointer किसी Object को Point करता है, तब Object के Members को Access करने के लिए Dot Operator के स्थान पर Object के नाम के साथ Arrow Operator का प्रयोग करना पडता है। Arrow Operator का प्रयोग किस प्रकार से किया जाता है, इसे समझने के लिए निम्न उदाहरण देखते हैं:
// demonstrates access to members using pointer // and dash greater-than (->) operator #include <iostream.h> #include <conio.h> class English // English class { private: int feet; float inches; public: void getdist() // get length from user { cout << “\nEnter feet: "; cin >> feet; cout << “Enter inches: "; cin >> inches; } void showdist() // display distance { cout << feet << “\'-” << inches << '\“'; } }; void main() { English edist; // make English object English* ptreng = &edist; // make pointer to object edist.getdist() // access object members edist.showdist(); // with dot operator ptreng->getdist(); // access object members ptreng->showdist(); // with -> operator }
एक बात हमेंशा ध्यान रखें कि कभी भी जब किसी Object को Pointer द्वारा Access किया जाता है, तब हमें Dot Operator के स्थान पर Arrow Operator का प्रयोग करना पडता है। यदि हम निम्नानुसार Dot Operator का प्रयोग करके निम्न Statement द्वारा Object के Members को Access करना चाहें,
ptreng.getdist(); // won’t work; ptreng is not an object
तो हम Object के किसी भी Member को Access नहीं कर सकते हैं। क्योंकि ptreng कोई Object नहीं है बल्कि Object edist का Pointer है। जबकि Dot Operator अपने Left में हमेंशा एक Object को खोजता है। जब उसे Object नहीं मिलता है, तो वह Error Generate करता है। यदि हम Dot Operator का प्रयोग करके ही Object के Members को Access करना चाहते हैं, तो पहले हमें Object के Pointer से Dereferencing द्वारा Object को प्राप्त करना होगा, फिर हम उस Object के Reference में उसके Members को Call कर सकते हैं। यानी यदि हम इसी Statement को Accessible बनाना चाहें, तो हमें यही Statement निम्नानुसार लिखना होगा:
(*ptreng).getdist();
इस Statement में *ptreng एक Object है ना कि Pointer है। इसलिए हम इसे Dot Operator द्वारा Access कर सकते हैं। ये Statement काम तो करेगा लेकिन इस तरह से विभिन्न Statement को Use करना काफी असुविधाजनक होता है। इसलिए इस Operator के स्थान पर हम Directly Pointers से Object के Members को Access करने के लिए Arrow Operator को Use करते हैं। यदि हम उपरोक्त Statement को ही एक Arrow Operator द्वारा Access करना चाहें, तो निम्नानुसार कर सकते हैं:
ptreng->getdist();
Arrow Operator (->), Pointers to Object के साथ उसी तरह से काम करता है जिस तरह से Dot Operator Objects के साथ करता है। जब हमें समान प्रकार के बहुत से Objects या Variables को Memory में Store करना होता है, तब हम Array का प्रयोग करते हैं। किसी Array को Define करने के लिए हम निम्नानुसार Statement का प्रयोग करते हैं:
int array[10];
ये Statement 10 Integers को Store करने के लिए जितनी Memory की जरूरत होती है, उतनी Memory को Reserve कर लेता है। लेकिन Array की एक सबसे बडी कमी ये है कि हमें निश्चित तौर पर ये पता होना चाहिए, कि हमें कितने Data के लिए Memory Reserve करनी है। जबकि वास्तव में ऐसा नहीं हो सकता कि हम पहले से ही ये जान लें कि हमें किसी Array में कितने मानों को Store करना पड सकता है। साथ ही हम Array की Size को निम्नानुसार तरीके से भी Define नहीं कर सकते हैं, क्योंकि Compiler हमें ऐसा नहीं करने देता है:
cin >> SIZE; // Get the Array Size from User
int Array[SIZE]; // Error: Array Size must be a Constant
Compiler को हमेंशा Array की Size एक Constant के रूप में चाहिए होती है। अक्सर हमें ये पता नहीं होता है कि हमें कितनी Size के Array को Define करना है। इस स्थिति में या तो हम Array की Size को आवश्यकता से अधिक ले लेते हैं, जिससे Reserves Memory Waste होती है या फिर जरूरत से कम Memory Allocate करते हैं जिससे हमारे Program की Capabilities Limited हो जाती है।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook C++ Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
C++ Programming Language in Hindi | Page: 666 | Format: PDF