私の質問は単純です。クラスManがあり、manの名前を返すメンバー関数を定義したい場合、次の2つのバリアントのどちらを選択しますか?
初め:
string name();
2番:
void name(/* OUT */ string &name);
最初のバリアントは、不要なコピーを作成するため、一種の非効率的です(ローカル変数->戻り値->割り当ての左側の変数)。
2番目のバリアントはかなり効率的に見えますが、それは私が書くことを泣きます
string name;
john.name(name);
単純ではなく
string name(john.name());
では、どのバリアントを好むべきでしょうか。また、効率と利便性/読みやすさの間の適切なトレードオフは何ですか?
前もって感謝します。