ShapeTwoD と Square の 2 つのクラスがあります。Square は ShapeTwoD から派生しています。
class ShapeTwoD
{
public:virtual int get_x()
{ return x;}
void set_x(int x)
{x = x; }
private:
int x;
};
class Square:public ShapeTwoD
{
public:
virtual int get_x()
{ return x+5; }
private:
int x;
};
私のメインプログラムでは
int main()
{
Square* s = new Square;
s->set_x(2);
cout<<s->get_x() //output : 1381978708 when i am expecting 2
<<endl;
ShapeTwoD shape[100];
shape[0] = *s;
cout<<shape->get_x(); //output always changes when i am expecting 2
}
私が得ているコンソール出力は非常に奇妙です。
最初の出力は 1381978708 ですが、 2 であると予想しています。
2番目の出力は常に変化しますが、7になることも期待しています
仮想関数を使用して、最も派生したクラス メソッドに解決しようとしています。何が起こっているのか説明してもらえますか ???