আমাদের কাছে এখন অনেকগুলি নতুন বৈশিষ্ট্য সহ সি ++ 11 রয়েছে। একটি আকর্ষণীয় এবং বিভ্রান্তিকর এক (আমার জন্য অন্তত) নতুন nullptr
।
আচ্ছা, বাজে ম্যাক্রোর আর দরকার নেই NULL
।
int* x = nullptr;
myclass* obj = nullptr;
এখনও, আমি কিভাবে nullptr
কাজ করে না। উদাহরণস্বরূপ, উইকিপিডিয়া নিবন্ধ বলেছেন:
সি ++ 11 একটি বিশিষ্ট নাল পয়েন্টার ধ্রুবক: নাল্পটার হিসাবে পরিবেশন করার জন্য একটি নতুন কীওয়ার্ড প্রবর্তন করে এটিকে সংশোধন করে । এটি nullptr_t প্রকারের , যা স্পষ্টভাবে রূপান্তরযোগ্য এবং কোনও পয়েন্টার টাইপ বা পয়েন্টার-থেকে-সদস্য প্রকারের সাথে তুলনীয়। এটি সুস্পষ্টভাবে রূপান্তরযোগ্য বা বুল ব্যতীত অবিচ্ছেদ্য ধরণের সাথে তুলনীয় নয়।
এটি কীওয়ার্ড এবং কোনও ধরণের উদাহরণ?
এছাড়াও, আপনার কি আরও একটি উদাহরণ রয়েছে (উইকিপিডিয়াটির পাশে) যেখানে nullptr
ভাল পুরানো তার চেয়ে উচ্চতর 0
?
nullptr_t
, শুধুমাত্র এক সদস্য আছে নিশ্চিত nullptr
? সুতরাং, যদি কোনও ফাংশন ফিরে আসে nullptr_t
, তবে সংকলকটি ইতিমধ্যে জানে কোন ফাংশনটির শরীর বিবেচনা না করে কোন মানটি ফিরে আসবে?
std::nullptr_t
তাত্ক্ষণিকভাবে ব্যবহার করা যেতে পারে, তবে সমস্ত উদাহরণ একরকম হবে nullptr
কারণ প্রকারটি সংজ্ঞায়িত করা হয়েছে typedef decltype(nullptr) nullptr_t
। আমি বিশ্বাস করি যে প্রকারটি বিদ্যমান থাকার প্রাথমিক কারণটি nullptr
যদি প্রয়োজন হয় তবে ফাংশনগুলি বিশেষত ধরা পড়ার জন্য বিশেষভাবে ওভারলোড করা যায় । একটি উদাহরণের জন্য এখানে দেখুন ।
nullptr
সি ++ / সিএলআই-তে পরিচালিত হ্যান্ডলগুলির নাল রেফারেন্স উপস্থাপন করতেও ব্যবহৃত হয়।