以下のサンプルコードを検討してください。
#include <iostream>
using namespace std;
class A
{
private:
static int a;
int b;
protected:
public:
A() : b(0) {}
void modify()
{
a++;
b++;
}
void display()
{
cout << a <<"\n";
cout << b <<"\n";
}
};
int A::a=0;
class B : public A {
private:
int b;
public:
B(): b(5)
{
}
};
int main()
{
A ob1;
B ob2;
ob1.display();
ob2.display();
return 0;
}
上記のコードでは、class A
にはプライベートデータメンバーがあり、プライベートデータメンバーb
もclass B
ありb
ます。この関数display()
は、データメンバーを表示するために使用されます。を使用してdisplay()を呼び出すob1.display()
と、display()はクラスAのプライベートデータメンバーにアクセスしますb
。私はそれを理解しています。しかし、を使用してdisplayを呼び出すと、 display()はどちらにアクセスしますかob2.display
?b
それはb
クラスAのものb
ですか、それともクラスBのものですか?アクセスする理由を説明してくださいclass A's b
またはclass B's b