কম্পিউটার

C++ এ ডট অপারেটর কি?


বিন্দু এবং তীর অপারেটর উভয়ই একটি ক্লাসের সদস্যদের অ্যাক্সেস করতে 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

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

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

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

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