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