C++ में , Storage classes का उपयोग variable/function की features describe करने के लिए किया जाता है। इन features में basically includes the visibility, visibility और life time include है जो हमें program के runtime के दौरान किसी particular variable के existence का पता लगाने में help करते हैं। एक variable के लिए storage class defined करने के लिए, following syntax का पालन किया है।
Syntax :
storage_class var_data_type var_name;
C ++ 5 type के storage class का use करता है।
- auto
- register
- extern
- static
- mutable
Storage class | Keyword | Life time | Visibility | Initial value |
Automatic | auto | Function block | Local | Garbage |
External | extern | Function block | Global | zero |
Static | static | Whole program | Local | zero |
Register | register | Function block | Local | Garbage |
Mutable | mutable | Class | Local | Garbage |
auto :
auto keyword type inference capabilities provide करता है, जिसके उपयोग से programming language में expression के data type की automatic deduction की जा सकती है। यह उन चीजों को लिखने में कम समय लेता है जो compiler पहले से जानता है। जैसा कि all types केवल compiler phase में ही निकाले जाते हैं, compiler का समय थोड़ा increase हो जाता है लेकिन यह program के runtime को प्रभावित नहीं करता है।
यह सुविधा function और non-type template parameter तक भी extend होती है। programs के लिए C ++ [1]4 के बाद से, return type को इसकेreturn statement से deduced किया जाएगा।Because C ++[17], non-type के template parameter के लिए, argument से type का अनुमान लगाया जाएगा।
Syntax :
auto data-type var_name1 = value;
static :
इसका उपयोग static variable declare करने के लिए किया जाता है (जो अपने last value को तब भी बनाए रखता है जब वे scope में नहीं होते हैं)। इन variable को केवल एक बार start किया जाता है और केवल whole program की समाप्ति पर ही end किया जाता है, न कि code का एक specific block के complete होने पर। memory केवल एक बार variable को allocate की जाती है और default रूप से, compiler इसे value 0 provide करता है।
Syntax :
static data_type var_name1 = value;
register :
नाम के अनुसार, register storage class Register variable को store करता है। यह लगभग auto storage class के समान ही है, लेकिन इसमें compiler, data को computer के microproceser में एक vacant register (यदि मौजूद हो) में store करता है। यदि कोई vacant register available नहीं है, तो हम data को memory location में store करते हैं।
register class variable पर किए गए operations fast होते हैं क्योंकि वे register में store होते हैं (रजिस्टरों की प्रसंस्करण गति प्रोसेसर के बराबर होती है, इसलिए ऑपरेशन मुख्य मेमोरी की तुलना में तेज होते हैं)।
Syntax :
register data_type var name1 = value;
extern :
अगर हमें एक ही variable को दो same files के अंदर share करने की आवश्यकता है, तो हम storage class को external कर सकते हैं। बाहरी variable globally scoped होता है और उस file के बाहर access जा सकता है जिसमें इसे declare किया गया है। यह सभी programs के लिए visible है। Initially , by default, इन variable को value 0 दिया जाता है।
Syntax :
extern data-type var_name1 = value;
Mutable :
Mutable class storage specifier का उपयोग केवल class data member पर editable योग्य बनाने के लिए किया जाता है, भले ही member किसी const object का हिस्सा हो। mutable specifier का उपयोग उन names के साथ नहीं किया जा सकता है जो static हैं, या reference member के साथ हैं।