[過去ログ] 【初心者歓迎】C/C++室 Ver.102【環境依存OK】 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
588
(2): デフォルトの名無しさん [] 2018/04/15(日) 12:35:11 AAS
>>582
582(1): デフォルトの名無しさん [] 2018/04/15(日) 10:59:34 ID:c4dXLki+(4/8) AAS
Base::B() の virtual を削除する:

class Base {
public:
void A();
protected
void B();
};

すると、

Base b;
b.A(); ⇒ 「Base」が表示される。

Derived d;
d.A(); ⇒ 「Base」が表示される。
間違えた

Base *bp;
bp = &d;
b->A();
590: デフォルトの名無しさん [] 2018/04/15(日) 12:37:23 ID:c4dXLki+(6/8) AAS
>>587-588

ありがとうございました。
試してみようと思います。
599
(1): デフォルトの名無しさん [] 2018/04/15(日) 18:07:17 ID:c4dXLki+(8/8) AAS
>>588

試してみました。
確かにポインタを使うと期待通りの結果でしたが、参照を使うと期待通りにはいきませんでした。
これはなぜでしょうか?

#include "Derived.h"

int main() {
Base b;
Base& br = b;
br.A();

Derived d;
br = d;
br.A();

Base *bp;
bp = &b;
bp->A();

bp = &d;
bp->A();
}

実行結果は以下です。

Base
Base
Base
Derived
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.274s*