文字列の落とし穴 C++ 「リテラル文字列はそのアドレスを返す」

f:id:peroon:20200618005614p:plain

// そもそもできない
string s = "aaa" + "bbb";

// できるけど、sには謎の文字列が入る。"a"は入らない
string s = ""+'a';
  • リテラル文字列はそのアドレスを返す」を意識すると、2つ目のコードは""でどこか領域が確保され、+'a'によってアドレスがオフセットされ、そのアドレスがsに入るのだろう。なのでsをcoutなどで確認すると謎の文字列が出力される
  • 参考
  • Pythonとは違うね