Static Member Function

Static Member Function: हम किसी Static Data Member को किसी भी Member Function द्वारा Access कर सकते हैं। लेकिन किसी Static Data Member को Access करने के लिए एक विशेष प्रकार के Function को Use करना चाहिए। इस Special प्रकार के Member Function को Static Member Function या Static Method कहते हैं। ये Function किसी Object पर Apply नहीं होता बल्कि Static Variables की तरह ये Function पूरी Class पर Apply होता है।

Static Member Function

Static Member Function को Define करने के लिए हमें Static Keyword का प्रयोग करना पडता है। यदि हम Static Keyword का प्रयोग नहीं करते हैं तो ये Function एक सामान्‍य Member Function की तरह होता है। किसी Static Member Function को Call करने के लिए Object के नाम के साथ DOT Operator का प्रयोग करके Function का नाम लिखने की जरूरत नहीं होती है, बल्कि किसी Static Member Function को Call करने के लिए Class के नाम के साथ Scope Resolution Operator का प्रयोग करके Static Member Function का नाम लिखा जाता है। इस Concept को समझने के लिए निम्न Code Segment देखें:

class aclass
{
   private:
	  …
   public:
	static int stafunc()  // function definition
	{
		 // can access only static member data
	}
};

main()
{
   …
   aclass::stafunc();       // function call
   …
}

एक Static Member Function किसी Non – static Data Member को Refer नहीं कर सकता है, क्योंकि एक Static Function उस Class के किसी Object के बारे में कुछ नहीं जानता। ये Function केवल Class से सम्बंधित Static Data को ही Access कर सकता है। हम किसी Static Function को तभी Call कर सकते हैं जब हमने Class के Object नहीं Create किए होते। यानी किसी Class के Object Create किए बिना भी हम किसी Class के Static Member Function को Call कर सकते हैं।

Count-the-Objects Example

कई बार किसी Function या किसी Individual Object को ये जानने की जरूरत पडती है कि किसी समय किसी Class के कितने Objects Program में Create होने के बाद उपलब्ध (Exist) हैं। जैसे एक Race Car उदाहरण में कोई कार ये जानने की कोशिश कर सकता है कि उससे पीछे और उससे आगे कितनी कारें हैं।

मानलो कि हम एक Car Race Program में अपनी इच्छानुसार Cars Create करते हैं और हम ये जानना चाहते हैं कि Program में किसी समय कितनी Car Created व जीवित हैं। इस आवश्‍यकता को पूरा करने के लिए हम निम्नानुसार एक Class बना सकते हैं और Main Program में ये पता लगा सकते हैं कि कितनी Car Program में Exists हैं। हम यहां ये मान रहे हैं कि हर Car का एक Attribute उसका Serial Number है और दूसरा Attribute Car की Current संख्‍या है।

// Program
//Class Implementation
#include <iostream.h>
#include <conio.h>
class Car
{
	private:
		int CarNumber;          		// a Car's serial number
		static int totalCars;   		// all Cars made so far
							// NOTE: declaration only
	public:
		void init()                 		// initialize one Car
		{
			CarNumber = 10000 + totalCars++;
		}

		int getNumber()            		// get a Car's number
		{
			return CarNumber;
		}

		static int getTotal()      		// get total Cars
		{
			return totalCars;
		}
};

int Car::totalCars = 0;    				// NOTE: definition

//Program Implementation
void main()
{
	cout << "Total Cars = " << Car::getTotal() << endl;
	Car car1, car2, car3;    			// create Cars
	car1.init();           				// initialize them
	car2.init();
	car3.init();

	cout << "car1=" << car1.getNumber() << endl;
	cout << "car2=" << car2.getNumber() << endl;
	cout << "car3=" << car3.getNumber() << endl;
	cout << "Total Cars = " << Car::getTotal() << endl;
	getch();
}

// Output
	Total Cars = 0
	car1=10000
	car2=10001
	car3=10002
	Total Cars = 3

इस Program को Compile करके Run करने पर Program कोई भी Car Create करने से पहले getTotal() Member Function को Call करता है। फिर तीन Car Create करता है और उन्हें init() Member Function को Call करके एक Serial Number प्रदान करता है। फिर तीनों Cars के Serial Numbers को Display करता है और getTotal() Member Function को फिर से Call करता है।

ध्‍यान दें कि Non –Static Member Function init() Static Variable totalCars को Access कर सकता है, लेकिन Non – Static Member Function getTotal() किसी Non – Static Data Member को Access नहीं कर सकता है।

हमने इस Program में Object को Create करते ही उसे Initialize करने के लिए init() Member Function को Call किया है क्योंकि हम किसी Class के Data Members को Directly मान Initialize नहीं कर सकते हैं। लेकिन Constructors का प्रयोग करके हम ऐसे Objects Create कर सकते हैं, जो Create होते ही Default Values से Initialized हों। (Static Member Function – TutorialsPoint)

Static Data Member
Reference Variable in C++

CPP Programming Language in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook C++ Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

C++ Programming Language in Hindi | Page: 666 | Format: PDF

BUY NOW GET DEMO REVIEWS