এই भागে আমরা দেখব C++-এ namespace এবং class-এর মধ্যে পার্থক্য। Namespace এবং ক্লাস দুটি ভিন্ন ধারণা। ক্লাস হল ডেটা টাইপ। ক্লাসগুলো স্ট্রাকচারের এক্সটেন্ডেড ভার্সন। ক্লাসে ডেটা মেম্বার এবং ফাংশন মেম্বার হিসেবে থাকতে পারে, কিন্তু namespace-এ ভেরিয়েবল এবং ফাংশন গোষ্ঠীবদ্ধ করে রাখা যায়।
Namespace-কে অবজেক্ট হিসেবে তৈরি করা যায় না। এই কনসেপ্টটি সমান নামের ফাংশন, ক্লাস, ভেরিয়েবল ইত্যাদিকে আলাদা করার জন্য অতিরিক্ত তথ্য হিসেবে ব্যবহৃত হয়। একই নামের ভেরিয়েবল, ফাংশন আলাদা-अলাদা namespace-এ রাখা যায়।
এখন namespace এবং class-এর কিছু গুরুত্বপূর্ণ পার্থক্য নির্দেশ করা হলো -
Namespace আইডেন্টিফায়ার গ্রুপ করার জন্য ব্যবহার হয় যাতে তারা ক্ল্যাশ না করে। ক্লাস ব্যবহার করার জন্য সেই ক্লাসের ইনস্ট্যান্স তৈরি করতে হয়, কিন্তু namespace-এর জন্য এটি প্রয়োজন নয়।
Namespace-এর জন্য 'using' ডিক্লেরেশন ব্যবহার করা হয়। ক্লাসের জন্য এটি সম্ভব নয় যদি না সেটি থেকে ডেরাইভ করা হয়।
Namespace পুনরুজ্জীবিত করে আরও এলিমেন্ট যোগ করা যায় ট্রান্সলেশন ইউনিট জুড়ে। ক্লাসে এটি করা যায় না।
namespace my_namespace {
int function1();
}
namespace my_namespace {
int function1();
}ক্লাসের জন্য নিচের কোড সঠিক নয়:
class my_class {
int function1();
};
class my_class {
int function1();
};Unnamed namespace ব্যবহার করা যায়, কিন্তু unnamed class ব্যবহার করা যায় না। এতে এরর হয়।
namespace { // কানুনগত
int function1();
};
class { // এরর তৈরি করবে
int function1();
};