এই সেকশনে আমরা দেখব সি-তে void পয়েন্টার এবং সি++-তে void পয়েন্টারের মধ্যে পার্থক্য। উভয়টিই void পয়েন্টার হলেও, সি-এ একটি void পয়েন্টার যেকোনো পয়েন্টার টাইপে অ্যাসাইন করা যায়, কিন্তু সি++-এ এটি করা যায় না। সি++-এ এক্সপ্লিসিট টাইপকাস্ট করে অ্যাসাইন করতে হয়।
নিচের উদাহরণে এই লাইনগুলো সি-এ লিখলে এক্সিকিউট হবে:
void *p; int *int_ptr = p;
এটি সি-এ ঠিকমতো কাজ করবে। এখন যদি আমরা malloc() ব্যবহার করে মেমরি অ্যালোকেট করি, তবে এক্সপ্লিসিট টাইপকাস্ট ব্যবহার করতে পারি, কিন্তু না করলেও চলবে। malloc() ফাংশন void পয়েন্টার রিটার্ন করে।
int *int_ptr = malloc(sizeof(int) * 10);
এখানে রিটার্ন করা void পয়েন্টার ইমপ্লিসিটলি ইন্টিজার টাইপ পয়েন্টারে রূপান্তরিত হয়।
এখন যদি আমরা একই প্রোগ্রাম সি এবং সি++-এ চালাতে চাই, তবে আমাদের স্পষ্টভাবে পয়েন্টারগুলো টাইপকাস্ট করতে হবে।
void *p; int *int_ptr = (int *) p; int *arr_ptr = (int *) malloc(sizeof(int) * 10);