C++-এ কম্পাইল টাইম পলিমরফিজম সাপোর্ট করা হয়। কম্পাইল টাইম পলিমরফিজমের উদাহরণ হল ফাংশন ওভারলোডিং এবং অপারেটর ওভারলোডিং।
অপারেটর ওভারলোডিংয়ের কিছু নিয়ম আছে। এগুলো নিচে দেওয়া হলো:
শুধুমাত্র বিল্ট-ইন অপারেটরগুলো ওভারলোড করা যায়। যদি C++-এ কোনো অপারেটর না থাকে, তবে সেটি ওভারলোড করা যাবে না।
অপারেটরদের অ্যারিটি (operand সংখ্যা) পরিবর্তন করা যাবে না।
অপারেটরদের প্রসিডেন্স (precedence) একই থাকে।
ওভারলোডেড অপারেটর ডিফল্ট প্যারামিটার ধারণ করতে পারে না, ফাংশন কল অপারেটর "()" ছাড়া।
বিল্ট-ইন ডেটা টাইপের জন্য অপারেটর ওভারলোড করা যাবে না। কমপক্ষে একটি ইউজার-ডিফাইনড ডেটা টাইপ থাকতে হবে।
অ্যাসাইনমেন্ট "=", সাবস্ক্রিপ্ট "[]", ফাংশন কল "()", এবং অ্যারো অপারেটর "->" এই অপারেটরগুলো অবশ্যই মেম্বার ফাংশন হিসেবে ডিফাইন করতে হবে, ফ্রেন্ড ফাংশন হিসেবে নয়।
অ্যাসাইনমেন্ট "=", অ্যাড্রেস "&", এবং কমা "," এই অপারেটরগুলো ডিফল্টভাবে ওভারলোডেড থাকে।