例えば、それは私を困惑: Aのフィールド bufを通じて struct A {
// some fileds...
char buf[SIZE];
};
A a;
a = a;
、それはデフォルトの割り当て操作はYに、オブジェクトXを割り当てることmemcpyのようなものを呼び出すことのように、おそらく見えますので、どのような自体にオブジェクトを割り当てる場合上にa = a
int a[10];
int b[10];
a = b;
// struct test {
int a[10];
};
test a,b;
a = b;
は、最初のコードは、コンパイルされませんが、2番目はありません。クラスのデフォルトの代入演算子は各データメンバーの単なる呼び出し代入ですか?なぜ2番目のコードはコンパイルされますか?
抽象基本クラスA*へのポインタがあれば、それを(基本クラスとして)コピーまたは代入し、派生コピーコンストラクタまたは代入演算子を呼び出す必要があります。私はコピーコンストラクタが仮想ではないことを理解しているので、おそらくコピーコンストラクタはこれを行うためのオプションではありませんが、代入演算子はそうです。それでも動作していないようです:次のコードは、bの割り当てに失敗した assigned a