上調用賦值運算符我不知道這個代碼可以工作:數組
struct my_array
{
int r[1000];
};
int main()
{
my_array foo, bar;
foo = bar;
}
因爲foo = bar
通話將調用構造函數提供的類,它會懶洋洋地運用它的每一個成員operator=
。但是數組沒有對operator=
的實現,證明,這段代碼不能通過編譯:
int main()
{
int a[1000], b[1000];
a = b;
}
那麼怎麼來的我的第一個代碼編譯?
因爲struct類似'class'es,它有一個默認的'operator ='來複制每個成員。 –
@DavidSchwartz是嗎?這就是我寫的,默認的'operator ='被調用,這又會在每個成員上應用'operator =',我的問題是:這個工作如何給出數組沒有'operator ='(即' t被複制) – qdii
默認'operator ='複製每個成員。它不一定會調用'operator =',除非這是複製它們的適當方式。爲什麼要用'int r [2];''struct'與'int r1,r2;''複製一個'struct'? –