假設我定義這個結構:運算符重載在結構
struct Point {
double x, y;
};
我怎樣才能重載+
操作,這樣,申報,
Point a, b, c;
double k;
表達
c = a + b;
產量
c.x = a.x + b.x;
c.y = a.y + b.y;
和表達
c = a + k;
產生
c.x = a.x + k;
c.y = a.y + k; // ?
是否適用於後者的情況下可交換的屬性保持?也就是說,c = a + k;
和c = k + a;
必須分開處理嗎?
+1對於耐克的態度 – fredoverflow
爲什麼我們必須將Point參數聲明爲常量? – Raptor
@JosuéMolina所以你可以通過臨時工給他們;你不能用臨時的初始化非const引用。鑑於'Point'的簡單性,通過值直接傳遞它們沒有問題,而不是通過引用(在這種情況下,它們是否是'const'或不是無關緊要的)。但是無處不在的約定是通過引用const來傳遞類的類型,當約定真正無處不在時,並且不會導致其他問題時,最好遵守它們,如果只是爲了讓人們不要問你爲什麼要這樣做不同。 –