編輯:對不起,我在原始文章中使用了「賦值構造函數」而不是「賦值運算符」。現在修復。爲什麼不在這裏調用操作符?
事實證明,在以下代碼中調用複製構造函數而不是賦值運算符。任何人都可以告訴我背後的原因?謝謝。
class A
{
int i;
public:
A(int ii) { i = ii; }
A(const A& a) { i = a.i; i++; }
A& operator=(const A& a) { i = a.i; i--; }
};
int main(void)
{
A a(4);
A b = a;
return 0;
}
該代碼是否可以編譯?你不會從'operator ='返回任何東西(這不是一個構造函數)。 – Mat
它在g ++中編譯得很好。 – EXP0
'警告:函數返回非空無返回聲明。使用'-Wall'併爲自己節省一大筆麻煩。 – Mat