継承に同じ名前のメンバーが表示されます.
2265 ワード
子と親に同じ名前のメンバーが表示された場合、子オブジェクトから親に同じ名前のデータにアクセスするにはどうすればいいですか?
1.非静的メンバーの同名サブクラス同名メンバーへの直接アクセス 親の同名メンバーにアクセスするには、ドメイン を追加する必要があります.
2.静的メンバーの同名
静的メンバーと非静的メンバーは同じ名前で表示され、処理は一貫しています.サブクラス同名メンバーへの直接アクセス 親の同名メンバーにアクセスするには、ドメイン を追加する必要があります.
ただし、静的メンバー処理には2つのアクセス方式があります.オブジェクトアクセス クラス名による へのアクセス
1.非静的メンバーの同名
#include
using namespace std;
//
class Base
{
public:
Base()
{
m_A=100;
}
void func()
{
cout << "Base-func " << endl;
}
void func(int a)
{
cout << "Base-func(int a) " << endl;
}
int m_A;
};
class Son :public Base
{
public:
Son()
{
m_A = 200;
}
void func()
{
cout << "Son-func " << endl;
}
int m_A;
};
//
void test01()
{
Son s;
cout << s.m_A << endl;
// , ,
cout << s.Base::m_A << endl;
}
//
void test02()
{
Son s;
s.func(); //
s.Base::func();
// ,
// ,
s.Base::func(100);
}
int main()
{
test01();
test02();
system("pause");
return 0;
}
2.静的メンバーの同名
静的メンバーと非静的メンバーは同じ名前で表示され、処理は一貫しています.
ただし、静的メンバー処理には2つのアクセス方式があります.
#include
using namespace std;
//
// : , , ,
class Base
{
public:
static int m_A; //
static void func()
{
cout << "Base static func" << endl;
}
static void func(int a)
{
cout << "Base static func(int a)" << endl;
}
};
int Base::m_A = 100;
class Son :public Base
{
public:
static int m_A;
static void func()
{
cout << "Son static func" << endl;
}
};
int Son::m_A = 200;
//
void test01()
{
//1.
cout << " :" << endl;
Son s;
cout << s.m_A << endl;
// , ,
cout << s.Base::m_A << endl;
//2.
cout << " :" << endl;
cout << Base::m_A<