ডিফল্টরূপে, নেমস্পিড ফাংশনগুলি ব্যবহার করুন।
ক্লাসগুলি অবজেক্ট তৈরি করতে হয়, নেমস্পেসগুলি প্রতিস্থাপন করতে নয়।
অবজেক্ট ওরিয়েন্টড কোডে
স্কট মায়ার্স এই বিষয়টিতে তার কার্যকরী সি ++ বইয়ের জন্য একটি সম্পূর্ণ আইটেম লিখেছিলেন, "সদস্যবিহীন অ-বন্ধু ফাংশনকে সদস্য ফাংশনগুলিতে পছন্দ করুন"। হার্ব সাটারের একটি নিবন্ধে আমি এই নীতির একটি অনলাইন রেফারেন্স পেয়েছি:http://www.gotw.ca/gotw/084.htm
জেনে রাখা গুরুত্বপূর্ণ বিষয়টি হ'ল: C ++ ফাংশনগুলিতে একই নামস্থানে কোনও শ্রেণিটি সেই শ্রেণীর ইন্টারফেসের অন্তর্গত (কারণ) ফাংশন কলগুলি সমাধান করার সময় এডিএল those ফাংশনগুলি অনুসন্ধান করবে)।
নেমস্পিড ফাংশনগুলি, "বন্ধু হিসাবে ঘোষণা না করা" না করে ক্লাসের ইন্টার্নালগুলির অ্যাক্সেস নেই, যেখানে স্থির পদ্ধতি রয়েছে।
এর অর্থ হ'ল উদাহরণস্বরূপ, আপনার শ্রেণি বজায় রাখার সময়, আপনার শ্রেণির অভ্যন্তরীণ পরিবর্তনগুলি প্রয়োজন হলে, স্থিতিশীলগুলি সহ আপনাকে এর সমস্ত পদ্ধতিতে পার্শ্ব প্রতিক্রিয়াগুলি অনুসন্ধান করতে হবে।
এক্সটেনশন আই
একটি শ্রেণীর ইন্টারফেসে কোড যুক্ত করা হচ্ছে।
সি # তে, আপনি কোনও ক্লাসে অ্যাক্সেস না থাকলেও আপনি পদ্ধতিতে যুক্ত করতে পারেন। তবে সি ++ এ এটি অসম্ভব।
তবে, এখনও সি ++ তে, আপনি এখনও একটি নেমস্পিড ফাংশন যোগ করতে পারেন এমনকি এমন কেউ আপনার জন্য লেখা ক্লাসেও।
অন্য দিক থেকে দেখুন, আপনার কোডটি ডিজাইনের সময় এটি গুরুত্বপূর্ণ, কারণ আপনার ফাংশনকে একটি নামের জায়গাতে রেখে, আপনি আপনার ব্যবহারকারীদের ক্লাসের ইন্টারফেস বাড়াতে / সম্পূর্ণ করার অনুমতি দেবেন।
এক্সটেনশন II
পূর্ববর্তী পয়েন্টের একটি পার্শ্ব-প্রতিক্রিয়া, একাধিক শিরোনামে স্থির পদ্ধতিগুলি ঘোষণা করা অসম্ভব। প্রতিটি পদ্ধতি একই ক্লাসে ঘোষণা করতে হবে।
নেমস্পেসের জন্য, একই নেমস্পেসের ফাংশনগুলি একাধিক শিরোনামে ঘোষিত হতে পারে (প্রায়-মানক অদলবদল ফাংশন এটির সেরা উদাহরণ)।
এক্সটেনশন III
একটি নেমস্পেসের মূল শীতলতা হ'ল কিছু কোডে আপনি এর উল্লেখ এড়াতে পারবেন, যদি আপনি "ব্যবহার করে" কীওয়ার্ডটি ব্যবহার করেন:
#include <string>
#include <vector>
// Etc.
{
using namespace std ;
// Now, everything from std is accessible without qualification
string s ; // Ok
vector v ; // Ok
}
string ss ; // COMPILATION ERROR
vector vv ; // COMPILATION ERROR
এবং আপনি "দূষণ" কে এক শ্রেণিতে সীমাবদ্ধও করতে পারেন:
#include <string>
#include <vector>
{
using std::string ;
string s ; // Ok
vector v ; // COMPILATION ERROR
}
string ss ; // COMPILATION ERROR
vector vv ; // COMPILATION ERROR
প্রায়-স্ট্যান্ডার্ড অদলবদ্যা আইডিয়ামটি সঠিকভাবে ব্যবহারের জন্য এই "প্যাটার্ন" বাধ্যতামূলক।
এবং ক্লাসে স্থির পদ্ধতিগুলির সাথে এটি করা অসম্ভব।
সুতরাং, সি ++ নেমস্পেসগুলির নিজস্ব শব্দার্থবিজ্ঞান রয়েছে।
তবে এটি আরও এগিয়ে গেছে, যেহেতু আপনি উত্তরাধিকারের মতো একইভাবে নেমস্পেসগুলি একত্রিত করতে পারেন।
উদাহরণস্বরূপ, যদি আপনার AAA ফাংশন সহ নেমস্পেস A থাকে তবে একটি ফাংশন BBB সহ একটি নেমস্পেস বি, আপনি একটি নেমস্পেস সি ঘোষণা করতে পারেন এবং কীওয়ার্ডটি ব্যবহার করে এই নেমস্পেসে AAA এবং BBB আনতে পারেন।
উপসংহার
নেমস্পেসেস নেমস্পেসের জন্য। ক্লাস ক্লাস জন্য হয়।
সি ++ ডিজাইন করা হয়েছিল যাতে প্রতিটি ধারণাগুলি আলাদা হয় এবং বিভিন্ন সমস্যার সমাধান হিসাবে বিভিন্ন ক্ষেত্রে ভিন্নভাবে ব্যবহৃত হয়।
যখন আপনার নামের জায়গাগুলি প্রয়োজন তখন ক্লাস ব্যবহার করবেন না।
এবং আপনার ক্ষেত্রে, আপনার নামের স্থান দরকার need