[過去ログ] C++相談室 part134 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
807
(2): (アウアウウー Sac7-zkh5) 2018/03/25(日)11:36 ID:Lywxeunja(1/4) AAS
char* str = "abc";

とは書かずに、

const char* str = "abc";

と常に書くようにと本に書いてあります。

理由は文字列リテラルは直接書き換えてはいけないからであると書かれています。
省12
809
(1): (ブーイモ MM26-Dh3i) 2018/03/25(日)11:41 ID:tMBl9Z88M(1) AAS
>>807
>>469
819: (ワッチョイ f397-zkh5) 2018/03/25(日)17:38 ID:S7OmeNGW0(1/2) AAS
>>807
ISO/IEC14882:2017 C.1.1の段落3で
char* p = "abc"; // valid in C, invalid in C++
となっているので、C++ではコンパイルが通ってはいけない

なぜ通ることがあるのかというと、
JIS X3014:2003 D.4で
定値文字列からの暗黙変換 文字列リテラルに対し,定値から非定値へ暗黙変換することは,推奨しない(4.2参照)。
となっており、C++03に従う限りコンパイルは通ることになっていた名残だ
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.221s*