オブジェクト a の独自のコピーに対して、freeFunct に const 以外の処理を実行させたいと考えています。
実際のコードケースでは、多くの異なるパラメーターを取り、それらすべてからいくつかのパブリック関数を呼び出し、それを任意のクラスの非静的メンバー関数にする意味がないため、freeFunct はフリー関数である必要があるとしましょう。
それを宣言する3つの異なる方法が頭に浮かびます。
3番目の解決策の方が悪いと感じています。
最初の2つに違いはありますか?
もっと良いものはありますか?
void freeFunct1(A a){
a.doStuff();
}
void freeFunct2(const A& a){
A b = a;
b.doStuff();
}
/**users of freeFunct3 are expected
*to give a copy of their variable:
*{
* A b = a;
* freeFunct3(b);
*}
*/
void freeFunct3(A& a){
a.doStuff();
}