ত্রুটি বার্তায় স্পষ্টভাবে বলা হয়েছে যে ডিফল্ট কনস্ট্রাক্টর পুরোপুরি মুছে ফেলা হয়েছে । এমনকি এমনকি এটিও বলেছেন: শ্রেণিতে একটি অ-স্থিতিশীল, কনস্ট ভেরিয়েবল রয়েছে, যা ডিফল্ট কর্টর দ্বারা আরম্ভ করা হবে না।
class X {
const int x;
};
যেহেতু X::x
হয় const
, এটা সক্রিয়া হবে - কিন্তু একটি ডিফল্ট ctor স্বাভাবিকভাবে এটা শুরু করা হবে (কারণ এটি একটি শুঁটি ধরনের)। সুতরাং, একটি ডিফল্ট কর্টর পেতে, আপনাকে নিজের একটি নির্দিষ্ট করতে হবে (এবং এটি অবশ্যই শুরু করতে হবে x
)। আপনি কোনও সদস্যের সাথে একই ধরণের পরিস্থিতি পেতে পারেন যা একটি রেফারেন্স:
class X {
whatever &x;
};
সম্ভবত এটি লক্ষণীয় যে এগুলি উভয়ই মূলত একই কারণে একটি অ্যাসাইনমেন্ট অপারেটরের অন্তর্নিহিত সৃষ্টিকেও অক্ষম করবে। অন্তর্নিহিত অ্যাসাইনমেন্ট অপারেটর সাধারণত সদস্য-ভিত্তিক অ্যাসাইনমেন্ট করে তবে কোনও কনস্টের সদস্য বা রেফারেন্স সদস্যের সাথে, এটি এটি করতে পারে না কারণ সদস্যকে বরাদ্দ করা যায় না। অ্যাসাইনমেন্টের কাজ করার জন্য আপনার নিজের অ্যাসাইনমেন্ট অপারেটরটি লিখতে হবে।
এ কারণেই কোনও const
সদস্যের সাধারণত স্থিতিশীল হওয়া উচিত - আপনি যখন কোনও অ্যাসাইনমেন্ট করেন, আপনি কোনওভাবেই কনস্ট সদস্যকে বরাদ্দ করতে পারবেন না। একটি সাধারণ ক্ষেত্রে আপনার সমস্ত দৃষ্টান্তের একই মান হতে চলেছে যাতে তারা ভেরিয়েবলের প্রচুর অনুলিপি না রেখে একক ভেরিয়েবলের অ্যাক্সেস ভাগ করে নিতে পারে যা সকলেরই একই মান।
অবশ্যই বিভিন্ন মান সহ উদাহরণস্বরূপ তৈরি করা সম্ভব - যদিও আপনি বস্তুটি তৈরি করার সময় আপনি (উদাহরণস্বরূপ) একটি মান পাস করেন, সুতরাং দুটি পৃথক বস্তুর দুটি পৃথক মান থাকতে পারে। তবে, আপনি যদি এগুলি অদলবদলের মতো কিছু করার চেষ্টা করেন তবে কনস্ট সদস্যটি অদলবদলের পরিবর্তে এর মূল মানটি ধরে রাখবেন।