প্রথম ফর্মটির অর্থ Circle
হ'ল রেফারেন্সের সাথে আবদ্ধ বস্তুর (অবস্থার) যা copy()
ফাংশনের প্যারামিটার copy()
সে রেফারেন্সের মাধ্যমে পরিবর্তন করা হবে না । রেফারেন্সটি একটি রেফারেন্স const
, সুতরাং Circle
সেই রেফারেন্সের মাধ্যমে সদস্যদের ফাংশনগুলি আহ্বান করা সম্ভব হবে না যেগুলি নিজেরাই যোগ্য নয় const
।
অন্যদিকে, দ্বিতীয় ফর্মটি অবৈধ: কেবল সদস্য ফাংশনগুলিইconst
যোগ্যতা অর্জন করতে পারে (আপনি যেখানে এটি ঘোষণা করছেন সেখানে একটি বিশ্বব্যাপী, friend
কার্যকারিতা রয়েছে)।
যখন const
কোনও সদস্যের কার্যের যোগ্যতা অর্জন করে, তখন যোগ্যতাটি অন্তর্নিহিত this
যুক্তিটিকে বোঝায় । অন্য কথায়, এই ফাংশনটি যে বস্তুটির উপরে প্রবেশ করা হয়েছে তার অবস্থার পরিবর্তন করতে দেওয়া হবে না (অন্তর্নিহিত this
পয়েন্টার দ্বারা চিহ্নিত বস্তুটি ) - mutable
অবজেক্টগুলি বাদ দিয়ে তবে এটি অন্য গল্প।
কোড সহ এটি বলতে:
struct X
{
void foo() const
{
_x = 42;
_y = 42;
}
void bar(X& obj) const
{
obj._x = 42;
_x = 42;
}
void bar(X const& obj)
{
obj._x = 42;
obj._y = 42;
_x = 42;
}
int _x;
mutable int _y;
};