C++ Storage Classes

Introduction to C++ Storage Classes

C++ में variables की अलग अलग storage classes (categories) होती है। अलग अलग storage classes के variables अलग अलग तरीके से store और process किये जाते है।

Storage classes programmer को variables के storage, visibility और scope का control provide करती है। Programmers अपनी आवश्यकता के अनुसार किसी भी storage class का variable create कर सकते है।

एक storage class के माध्यम से compiler को variable के बारे में निचे दी जा रही जानकारी प्राप्त होती है।

  • Storage - Storage classes के द्वारा compiler को पता चलता है की variable को कँहा और कैसे store किया जाएगा।
  • Initial value - Storage classes के माध्यम से compiler को variable की initial (शुरूआती) value पता चलती है। Initial value वह value होती है जो variable create होते ही उसे उसकी class के अनुसार automatically assign हो जाती है। अलग अलग storage classes के variables की initial value अलग अलग होती है।
  • Scope - Storage classes के माध्यम से compiler को variables के scope का भी पता चलता है। अलग अलग storage classes के variables का scope अलग अलग होता है।
  • Life time - Storage class के माध्यम से compiler को variables के life time का भी पता चलता है। किसी भी variable का life time वह period होता है जब तक वह memory में रहता है। Storage classes के according सभी variables का life time अलग अलग होता है।

C++ में निचे दी जा रही storage classes available है।

  • auto
  • register
  • static
  • extern
  • mutable

इन सभी storage classes के बारे में आगे detail से बताया जा रहा है।

auto (automatic)

Auto storage class के variables का scope local होता है। सभी local variables auto variables होते है या फिर आप यह भी कह सकते है की सभी local variables की default storage class auto होती है।

Auto class के variables की default value garbage होती है। Auto variables RAM में store किये जाते है। Auto class के variables का life time function तक ही सिमित होता है। जैसे ही function का execution समाप्त होता है variable को memory से remove कर दिया जाता है।

Auto class के variables को auto keyword द्वारा create किया जाता है। इसका general syntax निचे दिया जा रहा है।

auto data-type variable-name = value;

जैसा की ऊपर बताया गया है by default सभी local variables auto class के होते है इसलिए variables create करते समय आपको auto keyword का प्रयोग करने की आवश्यकता नहीं होती है। जब आप ऐसा करते है तो compiler द्वारा warning show की जाती है। यह special conditions में प्रयोग किया जाता है।

register

Auto storage class की ही तरह register storage class के variables का scope local होता है, initial value garbage होती है और इनका lifetime function block ही होता है।

लेकिन register variables को CPU registers में store किया जाता है। Register CPU का हिस्सा होते है। Registers को RAM से भी अधिक speed से access किया जा सकता है।

जब आप register variables create करते है तो इस बात की कोई guarantee नहीं होती है की variable register में ही store होगा। यह सिर्फ एक request होती है जो बताती है की यदि program को run करते समय CPU registers free है तो variable को registers में ही store किया जाना चाहिए।

Register variables का एक drawback यह है की आप register variables के pointers नहीं create कर सकते है। Register variables memory में store नहीं होते है इसलिए इनका कोई memory address नहीं होता है। इसलिए आप इनके pointer variables नहीं create कर सकते है।

Register variables create करने का general syntax निचे दिया जा रहा है।

register-keyword data-type variable-name;

जैसा की आप ऊपर दिए गए syntax में देख सकते है register variables को register keyword द्वारा define किया जाता है।

जब आपको किसी variables को program में frequently use करना हो तब आपको उसे register storage class के साथ define करना चाहिए।

static

Static storage class के variables का scope local होता है और इनकी initial value zero होती है। Static variables का lifetime complete program का execution होता है। यानी की जब तक पूरा program execute होता है तब तक static variable memory में रहता है।

हालाँकि static varaibles का life time complete program execution होता है लेकिन इन variables को केवल उन्हीं functions blocks द्वारा प्रयोग किया जा सकता है जिनके द्वारा इन्हे create किया गया है।

Static variables create करने का general syntax निचे दिया जा रहा है।

static-keyword data-type variable-name;

Static variables को static keyword द्वारा create किया जाता है।

Extern (External)

Extern storage class के variables का scope global होता है और इनकी initial value zero होती है। Extern variables का lifetime complete program execution होता है।

Extern variables create करने का general syntax निचे दिया जा रहा है।

extern-keyword data-type variable-name;

Extern variables को program के बाहर extern keyword द्वारा globally declare किया जाता है। Extern variables को सभी program files में access किया जा सकता है। Extern variables को declare करते समय आप उन्हें initialize नहीं कर सकते है।

Mutable

Mutable storage class सिर्फ class objects के साथ ही प्रयोग की जाती है। Mutable variables (objects) की initial value zero होती है, इनका scope local होता है और इनका lifetime वह class होती है जिनके सन्दर्भ में इन्हें define किया जाता है।

जैसा की आपको पता है की constant variables को modify नहीं किया जा सकता है उसी प्रकार constant objects के data members को भी नहीं change किया जा सकता है। लेकिन यदि कोई data member (variable) mutable declare किया गया है तो उसे constant object के द्वारा change किया जा सकता है।

Mutable variables create करने का general syntax निचे दिया जा रहा है।

mutable-keyword data-type data-member-name;

Mutable variables को mutable class के साथ declare किया जाता है।