সি ++ এবং এর ধরণের স্টোরেজ ক্লাস কী?



এই স্টোরেজ ক্লাস ব্লগে আমরা সি ++ তে ব্যবহৃত বিভিন্ন স্টোরেজ ক্লাস দেখতে পাব যেমন উদাহরণ সহ অটো, রেজিস্টার, স্ট্যাটিক, বহিরাগত এবং পরিবর্তনীয়।

স্টোরেজ ক্লাস সি ++ চলক / ফাংশনগুলির আজীবন এবং দৃশ্যমানতা সংজ্ঞায়িত করে। লাইফটাইম এমন সময়কাল যা চলকটি সক্রিয় থাকে এবং দৃশ্যমানতা হ'ল প্রোগ্রামের বিভিন্ন মডিউল থেকে চলকটির অ্যাক্সেসযোগ্যতা। এই কোনও প্রোগ্রামের রানটাইম চলাকালীন একটি নির্দিষ্ট ভেরিয়েবলের অস্তিত্ব সনাক্ত করতে সহায়তা করে। এই স্টোরেজ ক্লাস ব্লগে আমরা সি ++ এ ব্যবহৃত বিভিন্ন স্টোরেজ ক্লাস দেখব।

চল শুরু করি.





সি ++ এ স্টোরেজ ক্লাসটি কী?

সি ++ এর প্রতিটি ভেরিয়েবলের ডেটা টাইপ এবং স্টোরেজ ক্লাস থাকে। ডেটা টাইপ এমন ডেটা প্রকারের উল্লেখ করে যা ভেরিয়েবল যেমন ইনট, ফ্লোট, চর ইত্যাদি হিসাবে সংরক্ষণ করা যায় স্টোরেজ ক্লাস একটি ভেরিয়েবলের দুটি পৃথক বৈশিষ্ট্য নিয়ন্ত্রণ করে: জীবনকাল এবং সুযোগ scope

আপনি দেখেন যে প্রতিটি ভেরিয়েবলের একটি ডেটা টাইপ থাকে তবে আপনি এখনও কোনও ভেরিয়েবলের সাথে সংযুক্ত কোনও স্টোরেজ ক্লাস দেখতে পাননি। প্রকৃতপক্ষে, আপনি যদি কোনও স্টোরেজ শ্রেণি সংজ্ঞায়িত না করেন তবে সংকলক স্বয়ংক্রিয়ভাবে এটিকে একটি ডিফল্ট স্টোরেজ শ্রেণি বরাদ্দ করে। একটি ভেরিয়েবলের স্টোরেজ ক্লাস মেমরিতে ভেরিয়েবলের স্টোরেজ অবস্থান, ডিফল্ট প্রাথমিক মান, ভেরিয়েবলের স্কোপ এবং তার জীবনকাল সম্পর্কে তথ্য দেয়।



স্টোরেজ ক্লাসের প্রকারগুলি

একটি সি ++ প্রোগ্রামে পাঁচটি স্টোরেজ ক্লাস রয়েছে:

  • অটো
  • নিবন্ধন
  • স্থির
  • বাহ্যিক
  • পরিবর্তনীয়

আসুন স্টোরেজ ক্লাসগুলির প্রতিটি সম্পর্কে বিস্তারিত আলোচনা করা যাক।

অটো স্টোরেজ ক্লাস

স্বয়ংক্রিয় (অটো) স্টোরেজ ক্লাসটি সমস্ত স্থানীয় ভেরিয়েবলের জন্য ডিফল্ট স্টোরেজ শ্রেণি, যা কোনও ফাংশন বা একটি ব্লকের মধ্যে ঘোষিত হয়। লেখার সময় অটো কীওয়ার্ডটি খুব কমই ব্যবহৃত হয় সি ++ প্রোগ্রাম



অটো ভেরিয়েবলের ক্ষেত্রটি সেই ফাংশন বা ব্লকের মধ্যে যেখানে সেগুলি ঘোষণা করা হয়েছে এবং এটি ফাংশন বা ব্লকের বাইরে অ্যাক্সেস করা যায় না। এটি প্যারেন্ট ব্লক / ফাংশনের মধ্যে নেস্টেড ব্লকগুলির মধ্যেও অ্যাক্সেস করা যেতে পারে যেখানে অটো ভেরিয়েবল ঘোষিত হয়েছিল।

আপনি পয়েন্টার ভেরিয়েবলটি ব্যবহার করে অটো ভেরিয়েবলগুলি তাদের সুযোগের বাইরে অ্যাক্সেস করতে পারেন। আপনার একই মেমোরি অবস্থানের দিকে নির্দেশ করতে হবে যেখানে ভেরিয়েবলগুলি বসবাস করছে।

এর জীবনকাল ফাংশনটির জীবনকাল হিসাবে একই। একবার কোনও ফাংশন কার্যকর করার পরে ভেরিয়েবলটি ধ্বংস হয়ে যায়।

ডিফল্টরূপে, ঘোষণার সময় তাদের কাছে আবর্জনার মান নির্ধারিত হয়।

বাক্য গঠন:

ডেটাটাইপ var_name1 [= মান]

বা

স্বয়ংক্রিয় ডেটাটাইপ var_name1 [= মান]

উপরের উদাহরণে দুটি ভেরিয়েবল একই স্টোরেজ শ্রেণীর সাথে সংজ্ঞায়িত করা হয়। অটো কেবলমাত্র ফাংশনগুলির মধ্যে স্থানীয় ভেরিয়েবলগুলি সংজ্ঞায়িত করতে ব্যবহৃত হতে পারে।

স্টোরেজ ক্লাস নিবন্ধন করুন

নাম অনুসারে, রেজিস্টার স্টোরেজ ক্লাসটি রেজিস্টার ভেরিয়েবলগুলি ঘোষণার জন্য ব্যবহৃত হয়। রেজিস্টার ভেরিয়েবলের সমস্ত ফাংশনালাইজ অটো ভেরিয়েবলের সমান হ'ল ফ্রি রেজিস্টার পাওয়া গেলে সংকলক মাইক্রোপ্রসেসরের রেজিস্টারে এই ভেরিয়েবলগুলি সংরক্ষণ করার চেষ্টা করে। যদি নিখরচায় নিবন্ধভুক্ত না হয় তবে এগুলি কেবল মেমরিতে সংরক্ষণ করা হয়।

সুতরাং, প্রোগ্রামের রানটাইম চলাকালীন মেমরিতে সংরক্ষিত অন্যান্য ভেরিয়েবলগুলির তুলনায় রেজিস্টার ভেরিয়েবলগুলির ক্রিয়াকলাপগুলি অনেক দ্রুত হয়।

সাধারণত, প্রোগ্রামে চলমান সময়ের উন্নতির জন্য কয়েকটি প্রোগ্রামে ঘন ঘন অ্যাক্সেসের প্রয়োজন হয় যা রেজিস্টার স্টোরেজ ক্লাসের মধ্যে ঘোষণা করা হয়। পয়েন্টার ব্যবহার করে একটি রেজিস্টার ভেরিয়েবলের ঠিকানা পাওয়া যায় না।

ভেরিয়েবলের সর্বাধিক আকার নিবন্ধকের আকারের সমান (যেমন একটি শব্দ প্রায়)। এতে মেমরির অবস্থান না থাকায় এটিতে অ্যালারি ‘&’ অপারেটর প্রয়োগ করা যাবে না।

বাক্য গঠন:

ডেটাটাইপ var_name1 [= মান] নিবন্ধন করুন

উদাহরণ:

mysql_fetch_array
{রেজিস্টার ইন্ট পাই}

‘রেজিস্টার’ সংজ্ঞায়িত করার অর্থ এই নয় যে ভেরিয়েবলটি কোনও রেজিস্টারে সংরক্ষণ করা হবে। এটি হার্ডওয়ার এবং প্রয়োগের বিধিনিষেধের উপর নির্ভর করে কোনও রেজিস্টারে সংরক্ষণ করা যেতে পারে।

আসুন নিবন্ধকার এবং অটো স্টোরেজ ক্লাসগুলির উদাহরণ দেখুন।

উদাহরণ:

# নেমস্পেস ব্যবহার করে স্ট্যান্ড // ভেরিয়েবলকে বহির্মুখী ঘোষণা করার ঘোষণা // অন্তর্গত মানটি x ইন্ট এক্স শূন্য অটোস্টোরজ ক্লাস () {প্রিন্টফ ('এনডেমনস্ট্রেটিং অটো ক্লাসন') // এ একটি অটো ভেরিয়েবল ঘোষনাও করা যেতে পারে (সহজভাবে // লিখন 'ইন্ট এ = 32' পাশাপাশি কাজ করে) ইনট নাম = 32 // অটো ভেরিয়েবল প্রিন্ট করে 'এ' প্রিন্টফ ('ভেরিয়েবলের মান' নাম '' 'অটো হিসাবে ঘোষণা করা হয়েছে:% ডিএন', নাম) প্রিন্টফ ( '--------------------------------') oid শূন্য রেজিস্টার স্টোরেজক্লাস () {প্রিন্টফ ('এন নিবন্ধনকারী নিবন্ধ শ্রেণিবদ্ধ') / / একটি রেজিস্টার ভেরিয়েবল রেজিস্টার লেখার ঘোষনা c c '' G '// রেজিস্টার ভেরিয়েবল মুদ্রণ' বি 'প্রিন্টফ (' ভেরিয়েবলের মান 'সি' '' নিবন্ধক হিসাবে ঘোষিত:% dn ', গ) প্রিন্টফ (' ---- ---------------------------- ') main int main () {// অটো স্টোরেজ ক্লাস অটোস্টোরেশনক্লাস প্রদর্শন করা () // প্রদর্শনের জন্য স্টোরেজ ক্লাস রেজিস্টার স্টোরেজ ক্লাস () রিটার্ন 0}

আউটপুট:

আউটপুট - সি ++ তে স্টোরেজ ক্লাস - এডুরেকাস্ট্যাটিক স্টোরেজ ক্লাস

স্ট্যাটিক স্টোরেজ ক্লাসটি ঘোষণার জন্য ব্যবহৃত হয় স্ট্যাটিক ভেরিয়েবল । স্ট্যাটিক ভেরিয়েবলগুলি তাদের ক্ষেত্রের বাইরে থাকলেও তাদের মান (অর্থাত্ শেষ মান) সংরক্ষণ করে। স্ট্যাটিক ভেরিয়েবলগুলি একবার এবং আরম্ভ করা হয় &প্রোগ্রামের সমাপ্তি অবধি বিদ্যমান।

স্থিতিশীল ভেরিয়েবলের জন্য মেমরিটি কেবল একবার বরাদ্দ করা হয় এবং কোনও নতুন মেমরি বরাদ্দ করা হয় না কারণ সেগুলি পুনরায় ঘোষিত হয়নি। গ্লোবাল স্ট্যাটিক ভেরিয়েবলগুলি প্রোগ্রামের যে কোনও জায়গায় অ্যাক্সেস করা যায়। ডিফল্টরূপে, তারা সংকলক দ্বারা 0 মান নির্ধারিত হয়।

সি ++ এ, স্ট্যাটিক যখন শ্রেণীর ডেটা মেম্বারে ব্যবহার করা হয়, তখন তার সদস্যের কেবলমাত্র একটি অনুলিপি তার শ্রেণীর সমস্ত বস্তু দ্বারা ভাগ করে নিয়ে আসে।

বাক্য গঠন:

স্ট্যাটিক ডেটাটাইপ var_name1 [= মান]

উদাহরণ:

# শূন্য ফাংশন (অকার্যকর) স্ট্যাটিক ইনট সি সি = 5 // গ্লোবাল স্ট্যাটিক ভেরিয়েবল মেইন () {যখন (সি--) {ফাংশন ()} রিটার্ন 0} শূন্য ফাংশন (শূন্য) {স্ট্যাটিক ইন্ট সিএনটি = 2 সেন্ট ++ স্টেড :: কোট<< 'cnt is ' << cnt std::cout << ' and c is ' << c << std::endl } 

আউটপুট:

বাহ্যিক স্টোরেজ ক্লাস

বহিরাগত স্টোরেজ শ্রেণীর প্রয়োজন হয় যখন ভেরিয়েবলগুলি একাধিক ফাইল জুড়ে ভাগ করা প্রয়োজন। বাহ্যিক ভেরিয়েবলের বিশ্বব্যাপী সুযোগ রয়েছে এবং এই ভেরিয়েবলগুলি যে ফাইল হিসাবে ঘোষণা করা হয় তার বাইরে দৃশ্যমান। বাহ্যিক চলক সমস্ত প্রোগ্রামের জন্য দৃশ্যমান। দুটি বা আরও বেশি ফাইল একই ভেরিয়েবল বা ফাংশন ভাগ করে নিলে এটি ব্যবহৃত হয়।

বাহ্যিক ভেরিয়েবলগুলির জীবনকাল যতক্ষণ প্রোগ্রামে এটি ঘোষিত হয় ততক্ষণ দীর্ঘ হয়। কোনও সাধারণ গ্লোবাল ভেরিয়েবলকে কোনও বহিরাগত / ব্লকে ঘোষণা / সংজ্ঞার আগে ‘বহিরাগত’ কীওয়ার্ড রাখার পাশাপাশি বহিরাগত তৈরি করা যেতে পারে।

আপনি যখন ‘বাহ্যিক’ ব্যবহার করেন তখন ভেরিয়েবলটি আরম্ভ করা যায় না কারণ এটি কেবল স্টোরের অবস্থানে ভেরিয়েবলের নাম নির্দেশ করে যা পূর্বে সংজ্ঞায়িত করা হয়েছিল।

বাক্য গঠন

বাহ্যিক ডেটা টাইপ var_name1

উদাহরণ

# অন্তর্নিবেশ সিএনটি বহিরাগত শূন্য রাইটিং_এক্সটার () প্রধান () nt সিএনটি = 5 লিখিত_প্রযুক্তি ()}

দ্বিতীয় ফাইল: সমর্থন.cpp

# এক্সটারনাল ইন সিএনটি শূন্য রাইটিং_এক্সটার (শূন্য)) স্টাড :: কোট অন্তর্ভুক্ত করুন<< 'Count is ' << cnt << std::endl } 

এখানে, এক্সটার্নর কীওয়ার্ডটি অন্য কোনও ফাইলে সিএনটি ঘোষণা করতে ব্যবহৃত হচ্ছে। এখন এই দুটি ফাইল নিম্নলিখিত এবং বিয়োগ হিসাবে সংকলন করুন

write g ++ main.cpp সমর্থন.cpp -o লিখুন

এটি রাইট এক্সিকিউটেবল প্রোগ্রাম তৈরি করবে, লেখার সম্পাদন করার চেষ্টা করবে এবং ফলাফলটি নিম্নলিখিত ও বিয়োগ হিসাবে পরীক্ষা করবে

$। / লিখুন

সি ++ তে স্টোরেজ ক্লাসের সাথে এগিয়ে চলুন, চলুন শেষেরটিটি দেখুন, অর্থাত্ পরিবর্তনীয় স্টোরেজ ক্লাস।

মিউটেবল স্টোরেজ ক্লাস

মিউটেবল স্পেসিফায়ারটি কেবল শ্রেণীর অবজেক্টগুলিতে প্রযোজ্য, যা কোনও বস্তুর সদস্যকে কনস্টের সদস্য ফাংশনকে ওভাররাইড করতে দেয়। এটি হ'ল কোনও মিউটেবল সদস্য কোনও কনস্ট সদস্যের কার্যক্রমে সংশোধন করা যায়।

শেষ পর্যন্ত, বিভিন্ন স্টোরেজ ক্লাসের মধ্যে পার্থক্য বোঝার জন্য তুলনা টেবিলটি দেখি।

স্টোরেজ ক্লাস

কীওয়ার্ড

লাইফটাইম

দৃশ্যমানতা

প্রাথমিক মান

স্বয়ংক্রিয়

নতুনদের জন্য ইনফরম্যাটিকা টিউটোরিয়াল পিডিএফ

অটো

ফাংশন ব্লক

স্থানীয়

আবর্জনা

বাহ্যিক

বাহ্যিক

পুরো প্রোগ্রাম

গ্লোবাল

শূন্য

স্থির

স্থির

পুরো প্রোগ্রাম

স্থানীয়

শূন্য

নিবন্ধন

নিবন্ধন

ফাংশন ব্লক

স্থানীয়

sql এবং pl sQL টিউটোরিয়াল

আবর্জনা

পরিবর্তনীয়

পরিবর্তনীয়

ক্লাস

স্থানীয়

আবর্জনা

উপরের সি ++ প্রোগ্রামগুলি যাবার পরে আপনি বুঝতে পারতেন যে সি ++ তে বিভিন্ন স্টোরেজ ক্লাসগুলি কীভাবে রয়েছে এবং সেগুলি কীভাবে প্রয়োগ করা যায়। আমি আশা করি এই ব্লগটি তথ্যবহুল এবং আপনার কাছে মূল্য সংযোজনযোগ্য।

এভাবে আমরা ‘সি ++ এ স্টোরেজ ক্লাস’ নিয়ে এই নিবন্ধটির শেষ পর্যন্ত এসেছি।

আপনি যদি আরও শিখতে চান তবে এটি দেখুন এডুরেকা, একটি বিশ্বস্ত অনলাইন লার্নিং সংস্থা। এডুরেকার জাভা জে 2 ইই এবং এসওএ প্রশিক্ষণ এবং শংসাপত্রের কোর্সটি আপনাকে হাইবারনেট ও স্প্রিংয়ের মতো বিভিন্ন জাভা ফ্রেমওয়ার্কের পাশাপাশি মূল এবং উন্নত জাভা উভয় ধারণার জন্য প্রশিক্ষণের জন্য তৈরি করা হয়েছে।

আমাদের জন্য একটি প্রশ্ন আছে? দয়া করে এই ব্লগের মন্তব্য বিভাগে এটি উল্লেখ করুন এবং আমরা যত তাড়াতাড়ি সম্ভব আপনার কাছে ফিরে আসব।