কম্পিউটার

একটি তীর অপারেটর কি, C++ এ `->`?


বিন্দু এবং তীর অপারেটর উভয়ই একটি ক্লাস বা কাঠামোর সদস্যদের অ্যাক্সেস করার জন্য C++ এ ব্যবহৃত হয়। এগুলি শুধুমাত্র বিভিন্ন পরিস্থিতিতে ব্যবহার করা হয়। C++ এ, শ্রেণি, স্ট্রাকট বা ইউনিয়ন হিসাবে ঘোষিত প্রকারগুলিকে "শ্রেণির প্রকার" হিসাবে বিবেচনা করা হয়। সুতরাং নিম্নলিখিতটি তাদের তিনটিকেই বোঝায়।

  • a.b শুধুমাত্র ব্যবহার করা হয় যদি b অবজেক্টের সদস্য হয় (বা একটি বস্তুর উল্লেখ) a. সুতরাং a.b-এর জন্য, একটি সর্বদা একটি শ্রেণীর প্রকৃত বস্তু (বা একটি বস্তুর উল্লেখ) হবে।

  • a->b মূলত (*a).b-এর জন্য একটি সংক্ষিপ্ত স্বরলিপি, অর্থাৎ, যদি a একটি বস্তুর নির্দেশক হয়, তাহলে a->bis বস্তুটির b সম্পত্তি অ্যাক্সেস করে যেটি একটি নির্দেশ করে।

মনে রাখবেন যে ডট ওভারলোড করা যাবে না কিন্তু -> ওভারলোড করা যেতে পারে, তাই আমরা আমাদের নিজস্ব ফাংশন (অপারেটর->()) সংজ্ঞায়িত করতে পারি যা এই অপারেটরটি ব্যবহার করার সময় বলা উচিত। তাই যদি a একটি ক্লাসের একটি অবজেক্ট হয় যা অপারেটরকে ওভারলোড করে-> (সাধারণ এই ধরনের ধরনের হয় স্মার্ট পয়েন্টার এবং ইটারেটর), তাহলে অর্থ হল ক্লাস ডিজাইনার যা কিছু প্রয়োগ করেছে।

রেফারেন্সগুলি, শব্দার্থগতভাবে, অবজেক্টের উপনাম, তাই আমারও "বা একটি পয়েন্টারের রেফারেন্স" যোগ করা উচিত ছিল। যাইহোক, আমি ভেবেছিলাম এটি সহায়কের চেয়ে বেশি বিভ্রান্তিকর হবে, যেহেতু রেফারেন্স টপয়েন্টার (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

  1. C++ এ কমা অপারেটর কি?

  2. C++ এ টারনারি অপারেটর (? X :Y) কি?

  3. C++ এ অপারেটরের সাইজ কি?

  4. C++ এ অ্যাক্সেস মডিফায়ারগুলি কী কী?