সি ++ 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ছদ্মবেশে।