1. 程式人生 > 其它 >C++繼承同名成員處理方式

C++繼承同名成員處理方式

技術標籤:C++C++繼承靜態

問題:當子類與父類出現同名的成員,如何通過子類物件,訪問帶子類或父類中同名的資料?

1.訪問子類同名成員 直接訪問即可

2.訪問父類同名成員 需要加作用域

程式碼示例:

#include <iostream>
using namespace std;
//繼承同名成員處理方式
class Base
{
public:
       Base()
       {
              m_A = 100;
       }
       void func()
       {
              cout << "Base-fun()呼叫 "
<< endl; } void func(int a) { cout << "Son-fun(int a)呼叫 " << endl; } int m_A; }; class Son:public Base { public: Son() { m_A = 200; } void func() { cout <<
"Son-fun()呼叫 " << endl; } int m_A; }; void test01() { Son s; cout << "Son的 m_A=" << s.m_A << endl; //如果通過子類訪問物件 訪問到父類中同名成員,需要加作用域 cout << "Base的 m_A=" << s.Base::m_A << endl; } //同名成員函式處理
void test02() { Son s; s.func(); //直接呼叫 呼叫是子類中的同名成員 //如何呼叫到父類中同名成員函式? s.Base::func(); //如果子類中出現和父類同名的成員函式,子類的同名成員會隱藏掉父類中所有同名成員函式 //如果想訪問到父親中被隱藏的同名成員函式,需要加作用域 s.Base::func(100); } int main() { //test01(); test02(); return 0; }

總結:
1.子類物件可以直接訪問到子類中的同名成員。
2.子類物件家作用域可以訪問到父類同名成員。
3.當子類與父類擁有同名的成員函式,子類會隱藏父類中同名成員函式,加作用域可以訪問到父親中同名函式。

更多精彩文章請關注微信公眾號:YQ程式設計,或微信掃描以下二維碼關注,還有許多IT類電子書等你來拿。

在這裡插入圖片描述