執行緒基礎知識10-volatile JAVA的可見性和有序性問題
阿新 • • 發佈:2022-04-06
繼承同名成員處理方式
問題:當子類與父類出現同名的成員,如何通過子類物件,訪問到子類或父類中同名的資料呢?
- 訪問子類同名成員 直接訪問即可
- 訪問父類同名成員 需要加作用域
示例:
class BaseTest { public: BaseTest() { m_A = 100; } void func() { cout << "BaseTest - func()呼叫" << endl; } void func(int a) { cout << "BaseTest - func(int a)呼叫" << endl; } public: int m_A; }; class Son : public BaseTest { public: Son() { m_A = 200; } //當子類與父類擁有同名的成員函式,子類會隱藏父類中所有版本的同名成員函式 //如果想訪問父類中被隱藏的同名成員函式,需要加父類的作用域 void func() { cout << "Son - func()呼叫" << endl; }public: int m_A; }; void test01() { Son s; cout << "Son下的m_A = " << s.m_A << endl; //如果想訪問父類中被隱藏的同名成員函式,需要加父類的作用域 cout << "Base下的m_A = " << s.BaseTest::m_A << endl; s.func(); //如果想訪問父類中被隱藏的同名成員函式,需要加父類的作用域 s.BaseTest::func(); //當子類與父類擁有同名的成員函式,子類會隱藏父類中所有版本的同名成員函式//如果想訪問父類中被隱藏的同名成員函式,需要加父類的作用域 s.BaseTest::func(10); } int main() { test01(); system("pause"); return EXIT_SUCCESS; }
總結:
- 子類物件可以直接訪問到子類中同名成員
- 子類物件加作用域可以訪問到父類同名成員
- 當子類與父類擁有同名的成員函式,子類會隱藏父類中同名成員函式,加作用域可以訪問到父類中同名函式