প্রায় অন্যান্য সমস্ত উত্তর সঠিক, তবে সেগুলির একটি দিক মিস করে: আপনি যখন const
কোনও ফাংশন ঘোষণায় কোনও পরামিতি অতিরিক্ত ব্যবহার করেন , সংকলকটি এটিকে অবশ্যই অগ্রাহ্য করবে। এক মুহুর্তের জন্য আসুন, আপনার উদাহরণের পয়েন্টার হওয়ার জটিলতা উপেক্ষা করুন এবং কেবলমাত্র একটি ব্যবহার করুন int
।
void foo(const int x);
হিসাবে একই ফাংশন ঘোষণা
void foo(int x);
শুধুমাত্র ফাংশনটির সংজ্ঞাটিতে অতিরিক্ত const
অর্থবোধক:
void foo(const int x) {
// do something with x here, but you cannot change it
}
এই সংজ্ঞাটি উপরের যে কোনও ঘোষণার সাথে সামঞ্জস্যপূর্ণ। আহ্বানকারী গ্রাহ্য না করে যে x
হয় const
--that একটি বাস্তবায়ন বিস্তারিত যে কল সাইট এ প্রাসঙ্গিক নন।
আপনার যদি ডেটাতে const
পয়েন্টার থাকে const
তবে একই বিধিগুলি প্রয়োগ হয়:
// these declarations are equivalent
void print_string(const char * const the_string);
void print_string(const char * the_string);
// In this definition, you cannot change the value of the pointer within the
// body of the function. It's essentially a const local variable.
void print_string(const char * const the_string) {
cout << the_string << endl;
the_string = nullptr; // COMPILER ERROR HERE
}
// In this definition, you can change the value of the pointer (but you
// still can't change the data it's pointed to). And even if you change
// the_string, that has no effect outside this function.
void print_string(const char * the_string) {
cout << the_string << endl;
the_string = nullptr; // OK, but not observable outside this func
}
কিছু সি ++ প্রোগ্রামার const
প্যারামিটারগুলি পয়েন্টার কিনা তা বিবেচনা না করে প্যারামিটারগুলি তৈরি করতে বিরক্ত করে ।