সি ++ 11 স্ট্যান্ডার্ড (আইএসও / আইইসি 14882: 2011) এতে বলেছে § C.1.1
:
char* p = "abc"; // valid in C, invalid in C++
সি ++ এর জন্য স্ট্রিং লিটারালটির পয়েন্টার হিসাবে এটি ঠিক আছে ক্ষতিকারক যেহেতু এটির সংশোধন করার যে কোনও প্রচেষ্টা ক্রাশের দিকে নিয়ে যায়। তবে কেন এটি সি বৈধ?
সি ++ 11 আরও বলেছে:
char* p = (char*)"abc"; // OK: cast added
যার অর্থ হ'ল যদি প্রথম বিবৃতিতে কোনও কাস্ট যুক্ত করা হয় তবে তা বৈধ হয়ে যায়।
Theালাই কেন দ্বিতীয় বিবৃতিটিকে সি ++ এ বৈধ করে তোলে এবং এটি প্রথমটির থেকে আলাদা কীভাবে হয়? এটি কি এখনও ক্ষতিকারক নয়? যদি এটি হয় তবে মানকটি কেন এটি ঠিক আছে?
OK
।
const
তাই এগুলি অগত্যা ছিল না const
।
char[]
প্রথমে স্ট্রিংয়ের ধরণটি তৈরি করেছিল । দ্বিতীয়টি হচ্ছেconst_cast
ছদ্মবেশে।