نوع بازگشتی میتونه void
باشه یا هر نوع دادهای. اما بهتره که خود شی *this
که فراخواننده است رو بفرستیم اون هم به صورت const
تا مستقیماً مورد دسترسی قرار نگیره
class C
{
const C& operator=(const C& obj)
{
...
}
};
در این صورت میتونیم از دستور زیر استفاده کنیم
C c1, c2, c3;
c1 = c2 = c3;
چون دستور بالا تبدیل به حالت زیر میشه در ارزیابی
c1 = (c2 = c3);
درون پرانتز، ابتدا اجرا میشه و انتساب مناسب اتفاق می افته. بعد از انتساب، یه ارجاع ثابت به c2
بر میگرده و بنابراین مثل اینه که نوشته باشیم
c1 = c2;
بنابراین دستور c1 = c2 = c3
معادل دو دستور c2 =c3;
و c1 = c2
هست که پشت سر هم اجرا بشه.
هیچ پژوهش انسانی نمیتواند ادعای علمی بودن داشته باشد، مگر اینکه از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)