C++ 訪問說明符詳解:封裝資料,控制訪問,提升安全性

小万哥丶發表於2024-04-23

C++ 訪問說明符

訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類資料並保護其免受意外修改或濫用。

三種訪問說明符:

  • public:允許從類外部的任何地方訪問成員。
  • private:僅允許在類內部訪問成員。
  • protected:允許在類內部及其派生類中訪問成員。

示例:

class Person {
public:
  string name; // 公共屬性,可從外部訪問

private:
  int age; // 私有屬性,僅在類內部可見

protected:
  string address; // 受保護屬性,可在類及其派生類中訪問
};

解釋:

  • Person 類中,name 屬性是公共的,這意味著可以在類外部建立物件並直接訪問該屬性:
Person p1;
p1.name = "Alice";
  • age 屬性是私有的,只能在類內部的成員函式中訪問:
Person p2;
// p2.age = 30; // 錯誤:age 是私有的
  • address 屬性是受保護的,可以在 Person 類及其派生類中訪問:
class Employee : public Person {
public:
  void printAddress() {
    cout << address << endl; // 可以訪問受保護屬性
  }
};

總結:

  • 使用訪問說明符來封裝類資料,使其免受意外修改或濫用。
  • 將屬性預設設定為私有,並在需要時顯式將其設定為 public 或 protected。
  • 僅在必要時使用 public 訪問許可權,並優先使用 private 或 protected 以提高安全性。

附加說明:

  • 靜態成員函式通常具有 public 訪問許可權,因為它們與類本身相關,而不是與特定物件相關。
  • 訪問說明符僅控制訪問許可權,不能賦予修改許可權。即使屬性是 public 的,也需要確保您有權對其進行修改。

C++ 封裝

封裝是物件導向程式設計(OOP)的核心概念之一,它強調將資料隱藏在實現細節之後,只暴露必要的介面進行互動。在 C++ 中,封裝可以透過訪問說明符(public、private 和 protected)來實現,並結合使用 setter 和 getter 方法來控制對私有資料的訪問。

封裝的優點:

  • 資料安全性: 封裝有助於保護資料免受意外修改或濫用,因為它限制了對私有成員的直接訪問。
  • 程式碼維護性: 封裝使程式碼更易於理解和維護,因為它隱藏了實現細節,只暴露必要的介面。
  • 程式碼可重用性: 封裝的程式碼通常更易於重用,因為它可以獨立於其他程式碼進行修改或擴充套件。

在 C++ 中實現封裝:

  1. 使用訪問說明符: 將類成員(屬性和方法)宣告為 private 以隱藏它們,或宣告為 public 以允許外部訪問。
  2. 使用 setter 和 getter 方法: 為私有屬性建立公共的 getter 和 setter 方法,用於讀取和設定屬性值。

示例:

class Person {
private:
  string name;
  int age;

public:
  // Getter 方法
  string getName() {
    return name;
  }

  // Setter 方法
  void setName(string n) {
    name = n;
  }

  // Getter 方法
  int getAge() {
    return age;
  }

  // Setter 方法
  void setAge(int a) {
    age = a;
  }
};

int main() {
  Person p1;
  p1.setName("Alice");
  p1.setAge(30);

  cout << p1.getName() << " is " << p1.getAge() << " years old." << endl;
  return 0;
}

解釋:

  • Person 類包含兩個私有屬性:nameage
  • 為了訪問這些屬性,提供了公共的 getter 和 setter 方法:getName(), setName(), getAge()setAge()
  • main() 函式中,我們建立了一個 Person 物件並使用 setter 方法設定其屬性值。
  • 然後,我們使用 getter 方法獲取屬性值並輸出它們。

總結:

封裝是 C++ 中物件導向程式設計的重要基石。透過有效地封裝類資料,您可以提高程式碼的安全性、維護性和可重用性。

最後

為了方便其他裝置和平臺的小夥伴觀看往期文章:

微信公眾號搜尋:Let us Coding,關注後即可獲取最新文章推送

看完如果覺得有幫助,歡迎點贊、收藏、關注

相關文章