বিন্দু এবং তীর অপারেটর উভয়ই একটি ক্লাসের সদস্যদের অ্যাক্সেস করতে C++ এ ব্যবহৃত হয়। তারা শুধু বিভিন্ন পরিস্থিতিতে ব্যবহার করা হয়. C++-এ, শ্রেণি, কাঠামো বা ইউনিয়ন হিসাবে ঘোষিত প্রকারগুলিকে "শ্রেণির প্রকার" হিসাবে বিবেচনা করা হয়। সুতরাং নিম্নলিখিতটি তাদের উভয়কেই বোঝায়।
- a.b শুধুমাত্র তখনই ব্যবহার করা হয় যখন b অবজেক্টের সদস্য হয় (বা একটি বস্তুর উল্লেখ[1]) a. সুতরাং a.b-এর জন্য, a সর্বদা একটি ক্লাসের একটি প্রকৃত বস্তু (বা একটি বস্তুর উল্লেখ) হবে।
- a →b মূলত (*a).b-এর জন্য একটি সংক্ষিপ্ত স্বরলিপি, অর্থাৎ, যদি a কোনো বস্তুর নির্দেশক হয়, তাহলে a→b সেই বস্তুর বৈশিষ্ট্য b অ্যাক্সেস করছে যা নির্দেশ করে।
মনে রাখবেন যে . ওভারলোডযোগ্য নয়। → একটি ওভারলোডযোগ্য অপারেটর, তাই আমরা আমাদের নিজস্ব ফাংশন (অপারেটর→()) সংজ্ঞায়িত করতে পারি যা এই অপারেটরটি ব্যবহার করার সময় বলা উচিত। তাই যদি a একটি ক্লাসের একটি বস্তু হয় যা অপারেটরকে ওভারলোড করে→ (সাধারণ এই ধরনের হয় স্মার্ট পয়েন্টার এবং ইটারেটর), তাহলে অর্থ হল ক্লাস ডিজাইনার যা কিছু প্রয়োগ করেছে।
[১] রেফারেন্সগুলি, শব্দার্থগতভাবে, অবজেক্টের উপনাম, তাই আমার #3 তেও "বা একটি পয়েন্টারের রেফারেন্স" যোগ করা উচিত ছিল। যাইহোক, আমি ভেবেছিলাম এটি সহায়কের চেয়ে বেশি বিভ্রান্তিকর হবে কারণ পয়েন্টার (T*&) এর রেফারেন্স খুব কমই ব্যবহার করা হয়।
উদাহরণ
#include<iostream> class A { public: int b; A() { b = 5; } }; int main() { A a = A(); A* x = &a; std::cout << "a.b = " << a.b << "\n"; std::cout << "x->b = " << x->b << "\n"; return 0; }
আউটপুট
এটি আউটপুট দেবে −
5 5