اول این که میدونیم امضای سربارگذاری عملگر به شکل زیر هست
return_type operator operator_function_name([argument_list]);
به عنوان مثال
class Car {...};
Car operator*(Car &C1, Car &C2){...}
// or
Car Car::operator+(Car &otherCar){...}
چند تا نکتهی ابتدایی به صورت زیر هست
۱- تغییر تعداد آرگومانهای یک تابع عملگر ممکن نیست.
۲- نوع برگشتی جزو امضای تابع نیست بنابراین در سربارگذاری الزامی در موردش وجود نداره.
۳- عملگرهای -، +، * و & هم به صورت یکانی و هم دوتایی قابل سربارگذاری هستن.
۴- عملگرهای .، .*، :: و ?: قابل سربارگذاری نیستن.
۵- چون عملگر روی اشیا کار میکنه نه کلاسها، در صورتی که از شیوهی اول استفاده میکنیم (تابع عضو) نباید به صورت ایستا تعریف بشه
۶- در صورتی که از شیوهی دوم استفاده میکنیم (تابع دوست) آرگومان اول همون شی فراخوانندهی تابع عملگر (یعنی سمت چپ عملگر هنگام فراخوانی) هست. در مثال بالا C1. که در اجرای کد Car Car1, Car2, Car3; Car3 = Car1 + Car2; معادل Car1 هست.
۷- اولویت و تعداد آرگومانها قابل تغییر نیست.
۸- به جز عملگر () در بقیهی عملگرها نمیشه به آرگومانها مقدار پیشفرض داد.
۹- سربارگذاری عملگرهای تخصیص و آزادسازی حافظه (new، delete، new[] و delete[]) تابع قوانین مشخصی جدا از قوانین بالا هست.
هیچ پژوهش انسانی نمیتواند ادعای علمی بودن داشته باشد، مگر اینکه از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)