সি ++ এ থাকা নেমস্পেসটি লজিকাল গ্রুপগুলিতে কোড সংগঠিত করতে এবং নাম সংঘর্ষ রোধ করতে ব্যবহৃত হয় যা বিশেষত যখন আপনার কোডবেজে একাধিক লাইব্রেরি অন্তর্ভুক্ত থাকে occur এই নিবন্ধে নিম্নলিখিত পয়েন্টারগুলি কভার করা হবে:
- নেমস্পেসের প্রয়োজন
- সি ++ এ একটি নেমস্পেসের সংজ্ঞা দেওয়া হচ্ছে
- একটি নেমস্পেস সংজ্ঞা দেওয়ার সময় মনে রাখার পয়েন্টগুলি
- সি ++ তে নেমস্পেস ব্যবহার করা
- বিতর্কিত নেমস্পেস
- নেস্টেড নেমস্পেসেস
নেমস্পেসের প্রয়োজন
একটি পরিস্থিতি বিবেচনা করুন, আমরা এমন কিছু কোড লিখছি যার একটি ফাংশন রয়েছে এবিসি () এবং সেখানে আরও একটি পূর্বনির্ধারিত লাইব্রেরি পাওয়া যাচ্ছে যা একই ফাংশন এবিসি () রাখে। সংকলনের সময়, সংকলকটির কোনও সুনির্দিষ্ট ধারণা নেই যে আমরা আমাদের কোডের মধ্যে অ্যাবসি () ফাংশনের কোন সংস্করণ উল্লেখ করছি।
এই সমস্যাটি কাটিয়ে ওঠার জন্য নেমস্পেসটি ডিজাইন করা হয়েছে এবং একই সাথে বিভিন্ন লাইব্রেরীতে একই নামের সাথে একই রকম ফাংশন, ভেরিয়েবল, ক্লাস ইত্যাদির পার্থক্য করতে অতিরিক্ত তথ্য হিসাবে ব্যবহৃত হয়। নেমস্পেস ব্যবহার করে আমরা প্রসঙ্গটি সংজ্ঞায়িত করতে পারি যেখানে নামগুলি সংজ্ঞায়িত করা হয়েছে। সংক্ষেপে, একটি নেমস্পেস একটি সুযোগ ব্যাখ্যা করে।
সমস্ত সি ++ স্ট্যান্ডার্ড লাইব্রেরির ধরণ এবং ফাংশনগুলি স্ট্যান্ডের নেমস্পেসে বা স্ট্যান্ডের ভিতরে নেস্টস্পেসে ঘোষিত হয় সুতরাং বেশিরভাগ প্রোগ্রামে এটি ব্যাপকভাবে ব্যবহৃত হয়।
একটি নেমস্পেসের সংজ্ঞা দেওয়া হচ্ছে
নেমস্পেসটি সংজ্ঞায়িত করার জন্য আমরা নীচের মতো নেমস্পেসের নামটি অনুসরণ করে কীওয়ার্ড নেমস্পেস দিয়ে শুরু করব:
নেমস্পেস নেমস্পেস_নাম {ইন্টি, বি // কোড ঘোষণাগুলি যেখানে // নাম এবং স্থান // নামস্পেস_নামের স্কোপে ঘোষণা করা হয়েছে}
একটি নেমস্পেস সংজ্ঞা দেওয়ার সময় মনে রাখার পয়েন্টগুলি
- নেমস্পেসের ঘোষণাগুলি কেবল বিশ্বব্যাপী সুযোগে উপস্থিত হয়।
- নেমস্পেসের ঘোষণাগুলিতে অ্যাক্সেস নির্দিষ্টকারী নেই।
- নেমস্পেসের ঘোষণাগুলি অন্য নেমস্পেসের মধ্যে নেস্ট করা যায়।
- নেমস্পেসের সংজ্ঞাটি বন্ধ হয়ে যাওয়ার পরে অর্ধিকলন দেওয়ার দরকার নেই।
- নেমস্পেস সংজ্ঞাটি বিভিন্ন ইউনিটে বিভক্ত হতে পারে।
# নেমস্পেস স্ট্যান্ড নেমস্পেসের প্রথম_ফাংশন {শূন্য ফানক () {কোট ব্যবহার করে অন্তর্ভুক্ত করুন<< 'Inside first_function' << endl } } namespace second_function { void func() { cout << 'Inside second_function' << endl } } int main () { // Calls function from first name space. first_function::func() // Calls function from second name space. second_function::func() return 0 }
আউটপুট:
উপরের উদাহরণে ফানক () ফাংশনটি দুটি পৃথক সময় সংজ্ঞায়িত করতে আমরা নেমস্পেস ধারণাটি ব্যবহার করি। আমরা নেমস্পেসের ফার্স্ট_ফাংশন এবং অধীনে প্রথম ফাংশনটি সংজ্ঞায়িত করিনেমস্পেসের অধীনে দ্বিতীয় কার্য second এই ফাংশনগুলিকে কল করতে আমরা নিম্নলিখিত পদ্ধতিতে স্কোপ রেজোলিউশন অপারেটরটি ব্যবহার করি - প্রথম_ফাংশন :: ফানক () এবং দ্বিতীয়_ফাংশন :: ফানক ()।
সি ++ তে নেমস্পেস ব্যবহার করা
প্রোগ্রামে নাম স্থান ব্যবহার করার জন্য তিনটি উপায় রয়েছে,
- ব্যবহারের নির্দেশ
- ব্যবহারের ঘোষণা
- স্কোপ রেজোলিউশন অপারেটর (: :)
ব্যবহারের নির্দেশ
আমরা নামের সাথে স্থানের প্রিপেন্ডিং এড়াতে পারি ব্যবহার নাম স্থান নির্দেশিকা। ব্যবহার কীওয়ার্ড আমাদের বিশ্বব্যাপী সুযোগ সহ আপনার প্রোগ্রামে একটি সম্পূর্ণ নেমস্পেস আমদানি করতে দেয়। এটি আমাদের প্রয়োজন অনুসারে অন্য নামস্থান বা কোনও প্রোগ্রামে নেমস্পেস আমদানি করতে ব্যবহার করা যেতে পারে।
নেমস্পেস_ফার্স্ট.এইচ হেডার ফাইলটি বিবেচনা করুন:
নেমস্পেস ফার্স্ট {ইন্ট ক্লাস ফার্স্ট_ক্লাস {ইন্ট আই}}
নেমস্পেস_সেকেন্ড। H ফাইলের উপরের নেমস্পেস শিরোনাম ফাইলটি অন্তর্ভুক্ত করে: 'নেমস্পেস_ফায়ারস্ট.চ' অন্তর্ভুক্ত করুন
নেমস্পেস দ্বিতীয় name নেমস্পেস ব্যবহার করে প্রথম ফার্স্ট_ক্লাস অবজেক্ট ইন y
আমরা নেমস্পেস_ফার্স্টটি নাম স্পেস_সেকেন্ডে আমদানি করি, সুতরাং ক্লাস ফার্স্ট_ক্লাস এখন নেমস্পেস_সেকেন্ডে উপলব্ধ হবে। অতএব আমরা নিম্নলিখিত প্রোগ্রামটি একটি পৃথক ফাইলে লিখতে পারি, এর new_file.cpp বলি।
# অন্তর্ভুক্ত 'নেমস্পেস_সেকেন্ড। h' পরীক্ষা শূন্যতা পরীক্ষা () name নেমস্পেস ব্যবহার করে সেকেন্ড // ক্লাসের ফার্স্ট_ ক্লাসের অবজেক্ট তৈরি ফার্স্ট_ক্লাস অজেক্ট 2}
তাই , ব্যবহারের নির্দেশিকাটি আপনি যেখানেই চান সি ++ তে নেমস্পেস ব্যবহার করা অনেক সহজ করে তুলেছে।
ব্যবহারের ঘোষণা
ব্যবহার-ঘোষণায় আমরা একটি সময়ে একটি নির্দিষ্ট নাম আমদানি করি যা কেবলমাত্র বর্তমান স্কোপের অভ্যন্তরে পাওয়া যায় এবং এটিকে স্কোপ রেজোলিউশনের সাহায্যে ডাকা হয়। দ্রষ্টব্য: ব্যবহার-ঘোষণার মাধ্যমে আমদানিকৃত নাম নির্দেশের সাহায্যে আমদানিকৃত নামটিকে ওভাররাইড করতে পারে। আমরা এটি নীচের উদাহরণে দেখতে পারি।
আসুন আমরা একটি হেডার ফাইল New_File.h বিবেচনা করি:
নেমস্পেস প্রথম {শূন্য এ () out কোট<< 'A of First namespacen' } } namespace Second { void A() { cout << 'A of Second namespacen' } }
এখন নীচের কোড সহ New_file_2.cpp নামের একটি নতুন প্রোগ্রাম ফাইল তৈরি করা যাক:
# অন্তর্ভুক্ত 'New_file.h' শূন্য বি () name নেমস্পেস ফার্স্ট ব্যবহার // দ্বিতীয় ব্যবহার করে নির্দেশ ব্যবহার করে :: এ // প্রথম ঘোষণাপত্র ব্যবহার করে :: এ () // প্রথম নামস্থান এ () এর ক্লাস এ () // কল এ () দ্বিতীয় নেমস্পেসের}
স্কোপ রেজুলেশন অপারেটর (: :)
আমরা নেমস্পেসের নাম এবং স্কোপ রেজোলিউশন ব্যবহার করে কোনও একটি স্পষ্টরূপে নামস্থলে ঘোষিত যে কোনও নাম নির্দিষ্ট করতে পারি “ :: ' সনাক্তকারী সহ অপারেটর।
জাভা কীভাবে বস্তুর অ্যারে তৈরি করবেন to
নেমস্পেস নিউ_স্পেস X ক্লাস এক্স {স্ট্যাটিক ইনট আই পাবলিক: অকার্যকর ফ্যাঙ্ক ()} // শ্রেণীর নাম ঘোষণা ক্লাস ওয়াই} // স্ট্যাটিক ক্লাস ভেরিয়েবল ইন্ট নিউজ স্পেস :: এক্স :: আই = 23 ক্লাস নিউ_স্পেস :: ওয়াই {ইন্ট পাবলিক: int getdata () out cout<< a } // Constructor declaration Y() } // Constructor definition explicitly New_space::Y::Y() { a=0 }
সি ++ এ মতবিরোধী নেমস্পেস
যেহেতু আমরা জানি যে সি ++ তে একটি নেমস্পেসটি বিভিন্ন অংশে সংজ্ঞায়িত করা যায় সুতরাং এটি এর পৃথকভাবে সংজ্ঞায়িত অংশগুলির যোগফল নিয়ে গঠিত। সুতরাং, যদি নেমস্পেসের এক অংশের জন্য অন্য একটি ফাইলের মধ্যে একটি নাম সংজ্ঞায়িত করা প্রয়োজন, সেই নামটি অবশ্যই তার পরিধিতে ঘোষণা করা উচিত। নিম্নলিখিত পদ্ধতিতে নিম্নলিখিত নাম স্থানটি লিখতে হয় হয় একটি নতুন নেমস্পেসকে সংজ্ঞায়িত করে বা বিদ্যমান একটিতে নতুন উপাদান যুক্ত করে:
নেমস্পেস নেমস্পেস_নাম {// কোড বডি}
সি ++ এ নেস্টেড নেমস্পেস
নেমস্পেসগুলি সহজেই বাসা বাঁধতে পারে এবং আমরা অন্য নামের জায়গার ভিতরে একটি নেমস্পেসটি নীচের মতো সংজ্ঞায়িত করতে পারি:
নেমস্পেস নেমস্পেস_নাম 1 {// কোডস্পিডের নাম স্পেস_নাম 1 নেমস্পেস নেমস্পেস_নেম 2 {// কোড বডি নেস্টেড নামমেস্পেস_নেম 2}}
এটির সাথে আমরা সি ++ নিবন্ধে নেমস্পেসের শেষে এসেছি। আমি আশা করি আপনি সি ++ এর নামস্থানটি ঠিক কী এবং এর সংজ্ঞা দেওয়ার বিভিন্ন উপায় কী তা সম্পর্কে একটি ধারণা পেয়েছেন। আপনি যদি আরও শিখতে চান তবে এটি দেখুন এডুরেকা, একটি বিশ্বস্ত অনলাইন লার্নিং সংস্থা। এডুরেকার জাভা জে 2 ইই এবং এসওএ প্রশিক্ষণ এবং শংসাপত্রের কোর্সটি হিবারনেট ও স্প্রিংয়ের মতো বিভিন্ন জাভা ফ্রেমওয়ার্কের পাশাপাশি আপনাকে মূল এবং উন্নত জাভা উভয় ধারণার জন্য প্রশিক্ষণের জন্য তৈরি করা হয়েছে।
আমাদের জন্য একটি প্রশ্ন আছে? দয়া করে এই ব্লগের মন্তব্য বিভাগে এটি উল্লেখ করুন এবং আমরা যত তাড়াতাড়ি সম্ভব আপনার কাছে ফিরে আসব।