an answer on Inheritance: why is there a difference in behaviour between inherited and supplied variables?から、x
のコピーが1つしかないので、以下のコードは0
を出力することを理解します。継承は実際にはクラスのメンバーを継承しますか?
#include<iostream>
using namespace std;
class A {
public:
int x;
A() { x = 10; }
};
class B : public A {
public:
B() { x = 0; }
};
int main() {
A* ab = new B;
cout << ab->x << endl; // prints 0
}
しかし、これは継承の意味に反するものではありませんか?
私はclass A
から公にinteritするclass B
をコード化された、と私はにそれを期待はab->x
印刷値10
をもたらしているはずである、メンバ変数x
のコピーを継承します。
私はここで何が欠けていますか?私はそれがなぜ継承にもかかわらず0
を印刷するのを理解するのが難しいと思っています。
コンストラクタでxを0に設定しているため、0が出力されます。私は正直なところ、この質問を理解していません。 – sepp2k
@ sepp2k:abの型は 'class A'です。 'class A'の' x'は10にのみ設定され、0には設定されていませんでした。 – Lazer
@ sepp2k:OPは、 'B'でアクセスする' x'は ' A 'であり、そうではない。 – Philipp