一文詳解C++的訪問說明符
C++ 訪問說明符
訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關(guān)鍵字。它們用于封裝類數(shù)據(jù)并保護其免受意外修改或濫用。
三種訪問說明符:
public
:允許從類外部的任何地方訪問成員。private
:僅允許在類內(nèi)部訪問成員。protected
:允許在類內(nèi)部及其派生類中訪問成員。
示例:
class Person { public: string name; // 公共屬性,可從外部訪問 private: int age; // 私有屬性,僅在類內(nèi)部可見 protected: string address; // 受保護屬性,可在類及其派生類中訪問 };
解釋:
- 在
Person
類中,name
屬性是公共的,這意味著可以在類外部創(chuàng)建對象并直接訪問該屬性:
Person p1; p1.name = "Alice";
age
屬性是私有的,只能在類內(nèi)部的成員函數(shù)中訪問:
Person p2; // p2.age = 30; // 錯誤:age 是私有的
address
屬性是受保護的,可以在Person
類及其派生類中訪問:
class Employee : public Person { public: void printAddress() { cout << address << endl; // 可以訪問受保護屬性 } };
總結(jié):
- 使用訪問說明符來封裝類數(shù)據(jù),使其免受意外修改或濫用。
- 將屬性默認設(shè)置為私有,并在需要時顯式將其設(shè)置為 public 或 protected。
- 僅在必要時使用 public 訪問權(quán)限,并優(yōu)先使用 private 或 protected 以提高安全性。
附加說明:
- 靜態(tài)成員函數(shù)通常具有 public 訪問權(quán)限,因為它們與類本身相關(guān),而不是與特定對象相關(guān)。
- 訪問說明符僅控制訪問權(quán)限,不能賦予修改權(quán)限。即使屬性是 public 的,也需要確保您有權(quán)對其進行修改。
C++ 封裝
封裝是面向?qū)ο缶幊蹋∣OP)的核心概念之一,它強調(diào)將數(shù)據(jù)隱藏在實現(xiàn)細節(jié)之后,只暴露必要的接口進行交互。在 C++ 中,封裝可以通過訪問說明符(public、private 和 protected)來實現(xiàn),并結(jié)合使用 setter 和 getter 方法來控制對私有數(shù)據(jù)的訪問。
封裝的優(yōu)點:
- 數(shù)據(jù)安全性: 封裝有助于保護數(shù)據(jù)免受意外修改或濫用,因為它限制了對私有成員的直接訪問。
- 代碼維護性: 封裝使代碼更易于理解和維護,因為它隱藏了實現(xiàn)細節(jié),只暴露必要的接口。
- 代碼可重用性: 封裝的代碼通常更易于重用,因為它可以獨立于其他代碼進行修改或擴展。
在 C++ 中實現(xiàn)封裝:
- 使用訪問說明符: 將類成員(屬性和方法)聲明為
private
以隱藏它們,或聲明為public
以允許外部訪問。 - 使用 setter 和 getter 方法: 為私有屬性創(chuàng)建公共的 getter 和 setter 方法,用于讀取和設(shè)置屬性值。
示例:
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()
函數(shù)中,我們創(chuàng)建了一個Person
對象并使用 setter 方法設(shè)置其屬性值。 - 然后,我們使用 getter 方法獲取屬性值并輸出它們。
總結(jié):
封裝是 C++ 中面向?qū)ο缶幊痰闹匾?。通過有效地封裝類數(shù)據(jù),您可以提高代碼的安全性、維護性和可重用性。
最后
到此這篇關(guān)于一文詳解C++的訪問說明符的文章就介紹到這了,更多相關(guān)C++訪問說明符內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Qt利用QSortFilterProxyModel代理實現(xiàn)自定義排序與聯(lián)合過濾
QsortFilterProxyModel類用來為model和view之間提供強大的排序和過濾支持。這篇文章將利用QSortFilterProxyModel代理實現(xiàn)自定義排序與聯(lián)合過濾,需要的可以參考一下2022-11-11利用Debug調(diào)試代碼解決0xC0000005:?讀取位置?0x0000000000000000?時發(fā)生訪問沖突問
這篇文章主要介紹了利用Debug調(diào)試代碼解決0xC0000005:?讀取位置?0x0000000000000000?時發(fā)生訪問沖突,本文給大家分享完美解決方案,需要的朋友可以參考下2023-03-03c++調(diào)用實現(xiàn)yolov5轉(zhuǎn)onnx介紹
大家好,本篇文章主要講的是c++調(diào)用實現(xiàn)yolov5轉(zhuǎn)onnx介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12