重複の可能性:
クラスにスワップ機能を提供するにはどうすればよいですか?
理解したと思うたびに、本当に混乱するものがあります。
独自のクラスにの実装を提供したい場合swap
、どうしますか?
可能性のリストは次のとおりです。
std
名前空間内に 1 つ定義し(引数を 2 つ取る) 、以下の #3 を呼び出します
(正しいと言う人もいれば、違法と言う人もいます)クラス内に静的メソッドを定義し、スワップする 2 つの引数を取ります
(#4 よりも理にかなっていますが、誰もこれを行わない理由がわかりません)。swap
必要に応じて基本クラスを呼び出します。swap
クラス内でインスタンス メソッドを定義し、必要に応じて基底クラスを呼び出す と交換する別の引数を 1 つ取ります。クラス内でインスタンス メソッドを定義し、他の2 つの引数を swapに取ります。これも
swap
必要に応じて基本クラスを呼び出します。#3 を呼び出す独自の名前空間 (2 つの引数を取る) で 1 つを定義します。
他の何か
私自身のswap
理解では、発信者が のように呼び出す #5 と #3 が必要ですがusing std::swap; swap(a, b);
、その組み合わせを示唆する人が誰もいないという事実は、私を本当に混乱させます。そして、実際には操作が静的であるのに、誰もがインスタンスメンバーを使用しているように見えるため、#4をまったく理解していません。私の理解が間違っているのか、これを調べたときに表示される答えがたくさんあるのかわかりません。
正しい方法は何ですか?