ইনজেকশন করা শ্রেণীর নামের অর্থ এটি Xএকটি সদস্য হিসাবে ঘোষিত হয় X, সুতরাং সেই নামের Xসন্ধানটি সর্বদা বর্তমান বর্গটি খুঁজে পায়, অন্য Xকোনওটি একই ঘেরের স্কোপ হিসাবে ঘোষিত হতে পারে না , যেমন
void X() { }
class X {
public:
static X create() { return X(); }
};
হয় create()ফাংশন একটি অস্থায়ী তৈরি Xবস্তু বা ফাংশন কলিং X? নেমস্পেসের সুযোগে এটি ফাংশনটি কল করবে, সুতরাং ইনজেকশন করা-শ্রেণি-নামের উদ্দেশ্য হ'ল নামের বডির মধ্যে Xসর্বদা শ্রেণিটি খুঁজে পাওয়া যায় তা নিশ্চিত করা (কারণ নাম ঘেরের আগে অনুসন্ধানটি ক্লাসের নিজস্ব স্কোপে শুরু হয়) সুযোগ)।
এটি শ্রেণীর টেম্পলেটগুলির মধ্যেও সহায়ক, যেখানে ইনজেকশন শ্রেণীর নামটি কোনও টেম্পলেট যুক্তি তালিকা ছাড়াই ব্যবহার করা যেতে পারে, উদাহরণস্বরূপ Fooপুরো টেম্পলেট-আইডির পরিবর্তে কেবলমাত্র ব্যবহার করা Foo<blah, blah, blah>, সুতরাং বর্তমান তাত্ক্ষণিকতার উল্লেখ করা সহজ। সি ++ 98 এবং সি ++ 03 এর মধ্যে পরিবর্তনের জন্য ডিআর 176 দেখুন যা এটি স্পষ্ট করেছে।
ইনজেকশন করা শ্রেণীর নামের ধারণাটি C ++ 98-এ উপস্থিত ছিল, তবে পরিভাষাটি C ++ 03 এর জন্য নতুন ছিল।
সি ++ 98 বলেছেন:
একটি শ্রেণী-নাম সুযোগ যা তা অবিলম্বে ঘোষিত হয় পরে ঢোকানো হয় ক্লাস-নাম দেখা যায়। ক্লাস-নামটিও বর্গের মধ্যেই itselfোকানো হয়।
দ্বিতীয় বাক্যটি ডিআর 147 দ্বারা পরিবর্তিত হয়েছে সুতরাং সি ++ 03 [ক্লাস] / 2 তে বলেছেন:
একটি শ্রেণী-নাম সুযোগ যা তা অবিলম্বে ঘোষিত হয় পরে ঢোকানো হয় ক্লাস-নাম দেখা যায়। শ্রেণী-নাম এছাড়াও বর্গ নিজেই সুযোগ ঢোকানো হয়; এটি ইনজেকশন-শ্রেণি-নাম হিসাবে পরিচিত ।
সি ++ 98 এর আগেও, এআরএম মোটামুটি সমতুল্য শব্দ রয়েছে যার অর্থ ক্লাসের নামটি বর্গের বডিতে সর্বদা ক্লাসের জন্যই ব্যবহৃত হতে পারে:
ক্লাসের নামটি ক্লাসের নাম হিসাবে শ্রেণীর নাম হিসাবেও ব্যবহৃত হতে পারে এমনকি শ্রেণীর নির্দিষ্টকরণকারীর নিজের সদস্যের তালিকার মধ্যেও ।
- উদাহরণ স্বরূপ,
class link { link* next; };