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

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
200
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 7932-MxBP) [sage] 2024/02/03(土) 09:26:19.03 ID:Sz70frqK0(1/2) AAS
>>199
199(1): デフォルトの名無しさん (JP 0Hbd-IHfd) [] 2024/02/03(土) 04:38:02.47 ID:bq1KvR69H(1/2) AAS
外部リンク:wandbox.org

なんか「子クラスのコンストラクタに親クラスのオブジェクトを渡して子クラスのメンバを初期化する」(?)みたいなことができちゃってるんだけど、これってどういう仕様でこうなってんの?
Wandbox上だとC++2aではコンパイルできてC++17ではコンパイルできなかったからcpprefjpのC++20の機能の一覧も見てみたけどそれらしいものはなかったし
designated initializer も C++20 からの機能なんだけど……それは脇に置く。

この場合は集成体初期化に該当する。
C++17 から基底の初期化も集成体初期化で扱えるので
child c{p};
というように初期化出来ていた。

更に C++20 では集成体初期化を丸括弧で書いても良いことになったので
child c(p);
とすることが許されるようになった。
202: デフォルトの名無しさん (JP 0Hbd-IHfd) [] 2024/02/03(土) 09:48:07.39 ID:bq1KvR69H(2/2) AAS
>>200
外部リンク[html]:cpprefjp.github.io
これかあ
実は「childにコンストラクタがある場合」とか「childにprivateメンバがある場合」とか「childがparentをprivate継承している場合」とかはコンパイルが通らなくてもう意味が解らなかったんだけど、それもchildが集成体じゃなくなってたからだったんだね
ありがとう、勉強になった
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.039s