প্রথম ফর্মটির অর্থ 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;
};