C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
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
,關註後即可獲取最新文章推送
看完如果覺得有幫助,歡迎點贊、收藏、關註