const参照としてstd :: stringを返すことに疑問があります。std :: stringをconst参照として返します
class sample
{
public:
std::string mString;
void Set(const std::string& s)
{
mString = s;
}
std::string Get()
{
return mString;
}
};
std :: stringをconst参照constに渡します。その値は関数内で変更されていないためです。
Get関数では、実際に私はここで混乱しています。 std :: stringを値として返す方が意味があります。しかし、私はconst参照として文字列を渡すことによって、それが何か利点を確認していません。ストリングを参照としてリトラクトすると、エクスムーション速度が向上すると思いますが、わかりません。しかし、それを 'const'として返すと、これにはどんなメリットがありますか?
"このコードでは、Get()がconst参照の代わりに値によって返されるように変更されていると、もちろんぶら下がりポインタが生成されます。 - いいえ、コンパイルを中止します( "一時的なアドレスを取ることはできません")。コンパイルするよりもUBを使う方が良いです。実際には拡張でコンパイルできますが、これは一般的な拡張機能ではなく、標準ではまだ診断を求めているため、ユーザーには少なくとも警告する必要があります。 –
@SteveJessopありがとう、私は答えを修正しました。 – Angew