বিন্দু এবং তীর অপারেটর উভয়ই একটি ক্লাসের সদস্যদের অ্যাক্সেস করতে C++ এ ব্যবহৃত হয়। তারা শুধু বিভিন্ন পরিস্থিতিতে ব্যবহার করা হয়. C++ এ, শ্রেণি, স্ট্রাকট বা ইউনিয়ন হিসাবে ঘোষিত প্রকারগুলিকে "শ্রেণির প্রকার" হিসাবে বিবেচনা করা হয়। তাই নিম্নলিখিত তিনটিরই উল্লেখ করে৷
৷- a.b শুধুমাত্র তখনই ব্যবহার করা হয় যদি b অবজেক্টের সদস্য হয় (বা একটি বস্তুর উল্লেখ[1]) a. সুতরাং a.b-এর জন্য, a সর্বদা একটি ক্লাসের একটি প্রকৃত বস্তু (বা একটি বস্তুর উল্লেখ) হবে।
- a→b মূলত (*a).b-এর জন্য একটি সংক্ষিপ্ত স্বরলিপি, অর্থাৎ, যদি a একটি বস্তুর নির্দেশক হয়, তাহলে a→b বস্তুটির b বৈশিষ্ট্যকে অ্যাক্সেস করছে যা একটি নির্দেশ করে। .
মনে রাখবেন যে . ওভারলোডযোগ্য নয়। → ওভারলোডযোগ্য অপারেটর, তাই আমরা আমাদের নিজস্ব ফাংশন (অপারেটর→()) সংজ্ঞায়িত করতে পারি যা এই অপারেটরটি ব্যবহার করা হলে কল করা উচিত। তাই যদি a একটি ক্লাসের একটি বস্তু হয় যা অপারেটরকে ওভারলোড করে→ (সাধারণ এই ধরনের হয় স্মার্ট পয়েন্টার এবং ইটারেটর), তাহলে অর্থ হল ক্লাস ডিজাইনার যা কিছু প্রয়োগ করেছে।
[1] রেফারেন্সগুলি, শব্দার্থগতভাবে, অবজেক্টের উপনাম, তাই আমার #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