私はC++プログラミングに不慣れで、継承の概念を読んでいます。継承の概念について疑問があります。つまり、基本クラスと派生クラスに同じデータメンバーがある場合はどうなるかということです。また、以下のように私のコードを確認してください。
#include "stdafx.h"
#include <iostream>
using namespace std;
class ClassA
{
protected :
int width, height;
public :
void set_values(int x, int y)
{
width = x;
height = y;
}
};
class ClassB : public ClassA
{
int width, height;
public :
int area()
{
return (width * height);
}
};
int main()
{
ClassB Obj;
Obj.set_values(10, 20);
cout << Obj.area() << endl;
return 0;
}
上記では、基本クラスのデータメンバーと同じ名前のデータメンバーを宣言しています。set_values()
派生したクラスオブジェクトを使用して関数を呼び出し、データメンバーwidth
とを初期化しますheight
。
関数を呼び出すとarea()
、適切な値を返すのではなく、ガベージ値を返すのはなぜですか。そして、それは、派生クラスの基本クラスのデータメンバーと同じ名前のデータメンバーを宣言した場合にのみ発生します。派生クラスで宣言されたデータメンバーを削除すると、正常に機能しています。では、派生クラスでの宣言の問題は何ですか?私を助けてください。