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++ 中實現封裝:
- 使用訪問說明符: 將類成員(屬性和方法)宣告為
private
以隱藏它們,或宣告為public
以允許外部訪問。 - 使用 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
類包含兩個私有屬性:name
和age
。- 為了訪問這些屬性,提供了公共的 getter 和 setter 方法:
getName()
,setName()
,getAge()
和setAge()
。 - 在
main()
函式中,我們建立了一個Person
物件並使用 setter 方法設定其屬性值。 - 然後,我們使用 getter 方法獲取屬性值並輸出它們。
總結:
封裝是 C++ 中物件導向程式設計的重要基石。透過有效地封裝類資料,您可以提高程式碼的安全性、維護性和可重用性。
最後
為了方便其他裝置和平臺的小夥伴觀看往期文章:
微信公眾號搜尋:Let us Coding
,關注後即可獲取最新文章推送
看完如果覺得有幫助,歡迎點贊、收藏、關注