:: (স্কোপ রেজোলিউশন) অপারেটর ভেরিয়েবল স্কোপের কারণে লুকানো নামগুলো পেতে ব্যবহৃত হয় যাতে আপনি এখনও সেগুলো ব্যবহার করতে পারেন। স্কোপ রেজোলিউশন অপারেটরকে ইউনারি এবং বাইনারি দুভাবেই ব্যবহার করা যায়।
আপনি সিঙ্গেল স্কোপ অপারেটর ব্যবহার করতে পারেন যদি একটি নেমস্পেস স্কোপ বা গ্লোবাল স্কোপের নাম একটি ব্লক বা ক্লাসে একই নামে কোনো ডিক্লেয়ারেশন দিয়ে লুকিয়ে থাকা থাকে। উদাহরণস্বরূপ, যদি আপনার কাছে my_var নামে একটি গ্লোবাল ভেরিয়েবল থাকে এবং my_var নামে একটি লোকাল ভেরিয়েবল থাকে, তবে গ্লোবাল my_var অ্যাক্সেস করতে আপনাকে স্কোপ রেজোলিউশন অপারেটর ব্যবহার করতে হবে। উদাহরণস্বরূপ,
উদাহরণ
#include <iostream>
using namespace std;
int my_var = 0;
int main(void) {
int my_var = 0;
::my_var = 1; // গ্লোবাল my_var কে ১ সেট করুন
my_var = 2; // লোকাল my_var কে ২ সেট করুন
cout << ::my_var << ", " << my_var;
return 0;
}
আউটপুট
এটি নিচের আউটপুট দেবে:
1, 2
মেইন ফাংশনে ডিক্লেয়ার করা my_var গ্লোবাল নেমস্পেস স্কোপে ডিক্লেয়ার করা ইন্টিজার my_var কে লুকিয়ে রাখে। ::my_var = 1 স্টেটমেন্টটি গ্লোবাল নেমস্পেস স্কোপে ডিক্লেয়ার করা my_var নামক ভেরিয়েবলকে অ্যাক্সেস করে।
আপনি ক্লাসের নাম বা ক্লাস মেম্বারের নাম ব্যবহার করার জন্যও স্কোপ রেজোলিউশন অপারেটর ব্যবহার করতে পারেন। যদি একটি ক্লাস মেম্বারের নাম লুকিয়ে থাকা থাকে, তবে আপনি সেটি তার ক্লাসের নাম এবং ক্লাস স্কোপ অপারেটর দিয়ে প্রিফিক্স করে ব্যবহার করতে পারেন। উদাহরণস্বরূপ,
উদাহরণ
#include <iostream>
using namespace std;
class X {
public:
static int count;
};
int X::count = 10; // স্ট্যাটিক ডেটা মেম্বার ডিফাইন
int main() {
int X = 0; // ক্লাস টাইপ X কে লুকিয়ে রাখে
cout << X::count << endl; // ক্লাস X-এর স্ট্যাটিক মেম্বার ব্যবহার
}
আউটপুট
এটি নিচের আউটপুট দেবে:
10