একটি স্টোরেজ ক্লাস একটি C++ প্রোগ্রামের মধ্যে ভেরিয়েবল এবং/অথবা ফাংশনের সুযোগ (দৃশ্যমানতা) এবং জীবনকাল নির্ধারণ করে। এই স্পেসিফায়ারগুলি যে ধরনের পরিবর্তন করে তার আগে থাকে। নিম্নলিখিত স্টোরেজ ক্লাস রয়েছে, যেগুলো একটি C++ প্রোগ্রামে ব্যবহার করা যেতে পারে।
- অটো
- রেজিস্টার করুন
- স্থির
- বহিরাগত
- পরিবর্তনযোগ্য
সি-তে, অটো স্টোরেজ ক্লাস স্পেসিফায়ার আপনাকে স্পষ্টভাবে স্বয়ংক্রিয় স্টোরেজ সহ একটি পরিবর্তনশীল ঘোষণা করতে দেয়। অটো স্টোরেজ ক্লাস একটি ব্লকের ভিতরে ঘোষিত ভেরিয়েবলের জন্য ডিফল্ট। একটি পরিবর্তনশীল x যার স্বয়ংক্রিয় সঞ্চয়স্থান রয়েছে মুছে ফেলা হয় যখন x যে ব্লকে ঘোষণা করা হয়েছিল তা প্রস্থান করে।
আপনি শুধুমাত্র একটি ব্লকে ঘোষিত ভেরিয়েবলের নাম বা ফাংশন প্যারামিটারের নামের জন্য অটো স্টোরেজ ক্লাস স্পেসিফায়ার প্রয়োগ করতে পারেন। যাইহোক, ডিফল্টরূপে এই নামগুলির স্বয়ংক্রিয় স্টোরেজ রয়েছে। তাই স্টোরেজ ক্লাস স্পেসিফায়ার অটো সাধারণত ডেটা ঘোষণায় অপ্রয়োজনীয়।
এটি প্রাথমিকভাবে শুধুমাত্র সিনট্যাক্টিক্যাল সামঞ্জস্যের জন্য C++-এ নিয়ে যাওয়া হয়েছিল, যদিও পরে এটির নিজস্ব অর্থ, স্বয়ংক্রিয় টাইপ ডিডাকশন পেয়েছে।
সি-তে, রেজিস্টার স্টোরেজ ক্লাস স্পেসিফায়ার কম্পাইলারকে নির্দেশ করে যে বস্তুটি একটি মেশিন রেজিস্টারে সংরক্ষণ করা উচিত। রেজিস্টার স্টোরেজ ক্লাস স্পেসিফায়ারটি সাধারণত ভারী ব্যবহৃত ভেরিয়েবলের জন্য নির্দিষ্ট করা হয়, যেমন লুপ কন্ট্রোল ভেরিয়েবল, অ্যাক্সেসের সময় কমিয়ে কর্মক্ষমতা বাড়ানোর আশায়। যাইহোক, কম্পাইলার এই অনুরোধ মান্য করা প্রয়োজন হয় না. বেশিরভাগ সিস্টেমে সীমিত আকার এবং রেজিস্টারের সংখ্যার কারণে, কিছু ভেরিয়েবল আসলে রেজিস্টারে রাখা যেতে পারে।
স্ট্যাটিক স্টোরেজ ক্লাস কম্পাইলারকে নির্দেশ দেয় যে প্রোগ্রামের লাইফ-টাইমে একটি স্থানীয় ভেরিয়েবলকে অস্তিত্বে রাখার জন্য এটি যতবার আসে এবং সুযোগের বাইরে চলে যায় ততবার এটি তৈরি এবং ধ্বংস না করে। তাই, স্থানীয় ভেরিয়েবলগুলিকে স্ট্যাটিক করার ফলে তারা ফাংশন কলের মধ্যে তাদের মান বজায় রাখতে পারে।
এক্সটার্নাল স্টোরেজ ক্লাস স্পেসিফায়ার আপনাকে এমন বস্তু ঘোষণা করতে দেয় যা বেশ কিছু সোর্স ফাইল ব্যবহার করতে পারে। একটি বহিরাগত ঘোষণা বর্তমান উৎস ফাইলের পরবর্তী অংশ দ্বারা বর্ণিত পরিবর্তনশীলকে ব্যবহারযোগ্য করে তোলে। এই ঘোষণা সংজ্ঞা প্রতিস্থাপন করে না. ঘোষণাটি বাহ্যিকভাবে সংজ্ঞায়িত পরিবর্তনশীলকে বর্ণনা করতে ব্যবহৃত হয়।
পরিবর্তনযোগ্য স্টোরেজ ক্লাস স্পেসিফায়ার শুধুমাত্র একটি ক্লাস ডেটা মেম্বারকে পরিবর্তনযোগ্য করার জন্য ব্যবহার করা হয় যদিও সদস্যটি কনস্ট হিসাবে ঘোষিত একটি বস্তুর অংশ। আপনি স্ট্যাটিক বা কন্সট বা রেফারেন্স সদস্য হিসাবে ঘোষিত নামগুলির সাথে পরিবর্তনযোগ্য স্পেসিফায়ার ব্যবহার করতে পারবেন না৷
উদাহরণ
class A { public: A() : x(4), y(5) { }; mutable int x; int y; }; int main() { const A var2; var2.x = 345; // var2.y = 2345; }
কম্পাইলার অ্যাসাইনমেন্ট var2.y =2345 অনুমোদন করবে না কারণ var2 কে const হিসাবে ঘোষণা করা হয়েছে। কম্পাইলার অ্যাসাইনমেন্ট var2.x =345 অনুমোদন করবে কারণ A::x কে পরিবর্তনযোগ্য হিসাবে ঘোষণা করা হয়েছে।