は式s1 + s1
に結びついていますが、これはs2
が割り当てられたときに評価されるか、s2 += "Test";
が呼び出されたときに怠けて評価されています。また、s2
は一時的な文字列のためにメモリを保持しますか?評価値はいつ評価されますか?
#include <iostream>
#include <string>
int main()
{
std::string s1 = "Test";
std::string&& s2 = s1 + s1;
s2 += "Test";
std::cout << s2 << '\n';
}
クイック返信ありがとうございます。 's2'がちょうど別の' std :: string'だったとしたら、結果は同じになりますが、結果のバイナリは違うでしょうか? –
@BradyDeanはい、結果は同じです。結果のバイナリについて言うのは難しいです。とにかく私はそれを試してみた(https://gcc.godbolt.org/)、それは同じアセンブリを与えた。 – songyuanyao
これは、このケースでは観測可能な差異がゼロになるような方法でC++ 17で変更されています。 – Yakk