首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ 繼承基礎代碼示例:訪問控制與成員繼承

     編輯:關於C++

代碼示例

#include 
using namespace std;

class Animal {
private:
    int age;
protected:
    int id;
public:
    int height;
    void sayHi() { cout << "this is hello" << endl; }
};

class People : public Animal {
private:
    int aa;
protected:
    int cc;
public:
    int height;  // 遮蔽基類 height
    void sayHi() { cout << "people say hi" << endl; }  // 覆蓋
};

int main() {
    People pp;
    pp.height = 100;      // 派生類 public height
    pp.id = 200;          // 基類 protected → 派生類可訪問
    pp.cc = 200;          // 派生類 protected
    // pp.age = 10;       // 錯誤:基類 private 不可訪問
    // pp.aa = 10;        // 錯誤:派生類 private 不可訪問
    
    pp.sayHi();           // 調用派生類版本
    pp.Animal::sayHi();   // 顯式調用基類版本
    return 0;
}

運行結果

people say hi
this is hello

關鍵知識點總結

基類成員public 繼承後訪問性派生類內部可訪問主程序可訪問
publicpublic是是
protectedprotected是否
private不可訪問(但佔內存)否否
  1. 同名遮蔽:派生類成員遮蔽基類同名成員,需用 Base::member 訪問基類版本
  2. 覆蓋 vs 遮蔽:虛函數為覆蓋(多態),非虛函數為遮蔽(靜態綁定)
  3. 構造順序:基類構造 → 成員構造 → 派生類構造;析構順序相反
  4. 賦值兼容:派生類指針/引用可隱式轉換為基類指針/引用(public 繼承)

內存佈局圖解

People 對象內存:
+------------------+
| Animal::age      |  (private, 不可直接訪問)
| Animal::id       |  (protected)
| Animal::height   |  (public)
| People::aa       |  (private)
| People::cc       |  (protected)
| People::height   |  (public, 遮蔽基類 height)
+------------------+
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved