6

ISON3242§3.2の2番目のポイントからこのステートメントを誰かが説明できますか

クラスの非配置割り当てまたは割り当て解除関数は、そのクラスのコンストラクターの定義によってodr-useされます。クラスの非配置割り当て解除関数は、そのクラスのデストラクタの定義によって、または仮想デストラクタ(12.4)の定義ポイントでのルックアップによって選択されることによってodrで使用されます。26クラスのコピー割り当て関数はodr-12.8で指定されているように、別のクラスに対して暗黙的に定義されたコピー割り当て関数によって使用されます。クラスのムーブ代入関数は、12.8で指定されているように、別のクラスの暗黙的に定義されたムーブ代入関数によってodrで使用されます。

ISO規格2003によると:

クラスのコピー代入関数は、12.8で指定されているように、別のクラスの暗黙的に定義されたコピー代入関数によって使用されます。

これらのステートメントの実際の違いは何ですか?

誰かが例/プログラムの観点から上記の追加されたポイントを説明します...?

コンストラクターの移動/割り当て関数の移動->新機能が追加されたことを知っています。

誰かが例/プログラムの助けを借りてこれを説明できますか?

お願いします.............

お答えください

4

1 に答える 1

4

この追加の理由と例は、ここにあります。要するに、クラスの割り当て/割り当て解除関数を定義する必要がある正確なタイミングを明確にすることです。

(C++03) 1 つの定義規則では、「使用」の非常に具体的な定義のために、プログラムで使用されるすべての変数または関数が正確に 1 つの定義を持っている必要があります。したがって、割り当て (解放) 関数が「使用されている」と見なされる場合の説明は、定義が必要な場合にも適用されます。

「使用」という単語の一般的な意味と、ODR で定義されている「使用」の意味との間の混同を避けるために、2 番目の意味が意図されている場合は常に、「使用」という単語は「odr-use」に置き換えられています。

于 2011-04-11T10:58:55.047 に答える