কম্পিউটার টিউটোরিয়াল

C++-এ namespace এবং class-এর পার্থক্য


এই भागে আমরা দেখব 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();
};

  1. C++-এ private, public, protected মডিফায়ারের পার্থক্য

  2. C++-এ ডট (.) অপারেটর এবং -> (অ্যারো) অপারেটরের পার্থক্য

  3. C#-তে Class এবং Structure-এর পার্থক্য

  4. স্কালাতে Traits এবং Abstract Classes-এর পার্থক্য