スレを勃てるまでもないC/C++の質問はここで 25
[隔離病棟]
©2ch.net (467レス)
スレを勃てるまでもないC/C++の質問はここで 25
[隔離病棟]
©2ch.net http://mevius.5ch.net/test/read.cgi/tech/1471100645/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
12: デフォルトの名無しさん [sage] 2016/09/01(木) 12:44:39.61 ID:Cb20qd0C Class A { int a } Class B { int a } Class C : A, B { } // A Bを継承 この状態だとCからaにアクセスする場合は thisじゃどっちのaだよってなるから A::a, B::aってやる必要があるけど Class C { A a; B b; } // A Bを宣言 これと違う部分は 名前が衝突するかしないかだけ? http://mevius.5ch.net/test/read.cgi/tech/1471100645/12
14: デフォルトの名無しさん [sage] 2016/09/01(木) 18:20:52.36 ID:9l469SL1 >>12 コンストラクタやデストラクタのタイミングから考えれば両者は別物 例えばCの初期化時、CのメンバがAやBにアクセスする場合 前者は問題なくCのメンバは初期化されるが 後者は宣言の位置によって未初期化データにアクセスする危険がある 前者はCをAとしてみることが出来るし、CをBとしてみることも出来る でも後者においてCはCでしかない 例えばAを必要とする関数とBを必要とする関数がある場合、 前者はそのままCを引数に渡せるが後者は適宜メンバを指定しないといけない もっともオーバーロードされた関数だとCをAかBにキャストしてやんないと曖昧だと怒られる もちろん適切に宣言されていることは前提 http://mevius.5ch.net/test/read.cgi/tech/1471100645/14
15: デフォルトの名無しさん [sage] 2016/09/01(木) 18:26:02.24 ID:9l469SL1 >>12 >>14の補足 >後者は宣言の位置によって未初期化データにアクセスする危険がある Cのメンバを初期化リストで初期化する場合の話ね コンストラクタ本体部分でメンバに値を代入する場合なら、 Cのメンバはすでに初期化された後なので参照は可能 http://mevius.5ch.net/test/read.cgi/tech/1471100645/15
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.019s