>>113
オブジェクトの定義に対して初期化子を与えると、オブジェクトの初期値を
決定することになるが、初期化子には次の4種類ある :
T a{b};
T a={b};
T a = v;
T a(v);
・このうち、あらゆる局面で利用できるのは、最初の T a{b}の形式のみ
(なおこの形式はC++11で新しく導入された。)。
・一番大きな理由はこの形式は「縮小変換を許さないから」とされる。
ただし、ややこしいのが、Tの部分を autoにした場合は、T a{b}の形式は
落とし穴がされるので使うべきではないとされている。
なぜなら:
auto z1{99]; // z1は initializer_list<int>型になってしまう。
auto z2 = 99; // z2は、int型。
ところが、Tが具体的な型の場合には、T a{b} が推奨される:
int x1{99}; // 推奨される書き方。
int x1 = 99; // 縮小変換があるので推奨されない書き方。
全く一貫性が無く、C++11が駄目な部分の一つ。
探検
C vs C++ vs Rust Part.3
■ このスレッドは過去ログ倉庫に格納されています
115デフォルトの名無しさん
2022/02/04(金) 14:18:18.78ID:vKz9Nbsj■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【和訳付き】レーダー照射問題 中国軍と自衛隊との“音声データ”公開 中国国営メディア [♪♪♪★]
- 「中国側も日本機のレーダーを感知していた」 中国メディアが報道 [♪♪♪★]
- 【YouTuber】バイク事故で入院のゆたぼん、振込で「お見舞金」募る [muffin★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- 高市早苗首相、消費税減税に後ろ向き 足かせはレジシステム? 「責任ある積極財政」期待高いが [蚤の市★]
- 元放送作家が松岡昌宏の日テレ疑念に「批判めいた発言、前代未聞」「降板覚悟か」他局からも「仕事は一切こない可能性」 [muffin★]
