সম্পাদন করা
হিসাবে এমএম মন্তব্য, মধ্যে পরামিতি উপর এগুলির নমুনাconst
উপেক্ষা করা হয়। মূল উত্তরের সম্পাদিত উত্স (নীচে দেখুন) এটি দেখায়:
float correct(float const value);
float erroneous(float const value);
float changer(float value);
float correct(float value) {
return -value;
}
float erroneous(float value) {
value = -value;
return value;
}
float changer(float value) {
value = -value;
return value;
}
কোনও ত্রুটির বার্তা নেই।
যাইহোক, আমি আশা করি এটি সাহায্য করতে পারে আসল জায়গায় রেখে দেব।
মূল
দ্য const
একটি প্যারামিটার এ তোলে প্যারামিটার শুধুমাত্র পাঠযোগ্য ফাংশন ভিতরে।
উদাহরণ স্বরূপ:
float correct(float const value) {
return -value;
}
float erroneous(float const value) {
value = -value;
return value;
}
float changer(float value) {
value = -value;
return value;
}
এই উত্সটি ত্রুটি বার্তা ছাড়াই সংকলন করবে না।
কাজ correct()
প্রদত্ত মানটি পড়বে, তার চিহ্নটি পরিবর্তন করবে এবং প্রত্যাখ্যাত মানটি ফিরিয়ে দেবে।
কাজ erroneous()
প্যারামিটারে একটি অ্যাসাইনমেন্ট ব্যতীত কার্যকরভাবে একই রকম বলে মনে হচ্ছে। তবে প্যারামিটার হওয়ায় এটি const
অনুমোদিত নয়।
পরবর্তী, ফাংশন changer()
উভয় হিসাবে আগে কাজ করবে, তবে এটি কোনও ত্রুটি দেয় না।
কল সাইটটি দেখুন:
float f = 3.14159;
float g = correct(f); // or erroneous(f) or changer(f)
f
আর্গুমেন্ট হিসাবে প্রদত্ত ভেরিয়েবলটি প্যারামিটারে অনুলিপি করা হবে value
। changer()
ডাকা হলেও তা কখনই বদলায় না ।
আপনি প্যারামিটারগুলি কিছু ধরণের স্থানীয় ভেরিয়েবল হিসাবে দেখতে পছন্দ করতে পারেন। আসলে এগুলি বেশিরভাগ উত্পন্ন মেশিন কোডে এ জাতীয়ভাবে পরিচালিত হয়।
তো, আপনি const
মাঝে মাঝে দেখেন কেন ? আপনি যদি এটি একটি পয়েন্টার দেখেন প্যারামিটার হিসাবে সংজ্ঞায়িত করা ।
আপনি যখন মানটি নির্দেশিত মান পরিবর্তন করতে চান না , আপনাকে যুক্ত করতে হবে const
; তবে এটি সঠিক অবস্থানে করুন!
void effective(int const * pointer);
void futile(int * const pointer);
void possible_but_overly_restricted(int const * const pointer);
const
এখানে কি অপ্রয়োজনীয়, আপনি কী ভাবছেন যে ঘটছে?