日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++类成员的访问权限以及类的封装

發布時間:2025/3/12 c/c++ 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++类成员的访问权限以及类的封装 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C++通過 public、protected、private 三個關鍵字來控制成員變量和成員函數的訪問權限,它們分別表示公有的、受保護的、私有的,被稱為成員訪問限定符。所謂訪問權限,就是你能不能使用該類中的成員。

C++ 中的 public、private、protected 只能修飾類的成員,不能修飾類,C++中的類沒有共有私有之分。

在類的內部(定義類的代碼內部),無論成員被聲明為 public、protected 還是 private,都是可以互相訪問的,沒有訪問權限的限制。

在類的外部(定義類的代碼之外),只能通過對象訪問成員,并且通過對象只能訪問 public 屬性的成員,不能訪問 private、protected 屬性的成員。

通過 Student 類示例訪問權限:

#include <iostream> using namespace std;//類的聲明 class Student{ private: //私有的char *m_name;int m_age;float m_score;public: //共有的void setname(char *name);void setage(int age);void setscore(float score);void show(); };//成員函數的定義 void Student::setname(char *name){m_name = name; } void Student::setage(int age){m_age = age; } void Student::setscore(float score){m_score = score; } void Student::show(){cout<<m_name<<"的年齡是"<<m_age<<",成績是"<<m_score<<endl; }int main(){//在棧上創建對象Student stu;stu.setname("小王");stu.setage(15);stu.setscore(92.5f);stu.show();//在堆上創建對象Student *pstu = new Student;pstu -> setname("小華");pstu -> setage(16);pstu -> setscore(96);pstu -> show();return 0; }

運行結果:

小王的年齡是15,成績是92.5 小華的年齡是16,成績是96

類的聲明和成員函數的定義都是類定義的一部分,在實際開發中,我們通常將類的聲明放在頭文件中,而將成員函數的定義放在源文件中。

類中的成員變量 m_name、m_age 和m_ score 被設置成 private 屬性,在類的外部不能通過對象訪問。也就是說,私有成員變量和成員函數只能在類內部使用,在類外都是無效的

成員函數 setname()、setage() 和 setscore() 被設置為 public 屬性,是公有的,可以通過對象訪問。

private 后面的成員都是私有的,直到有 public 出現才會變成共有的;public 之后再無其他限定符,所以 public 后面的成員都是共有的。

以 setname() 為例,如果將成員變量m_name的名字修改為name,那么 setname() 的形參就不能再叫name了,得換成諸如name1、_name這樣沒有明顯含義的名字,否則name=name;這樣的語句就是給形參name賦值,而不是給成員變量name賦值。

因為三個成員變量都是私有的,不能通過對象直接訪問,所以必須借助三個 public 屬性的成員函數來修改它們的值。

類的封裝

private 關鍵字的作用在于更好地隱藏類的內部實現,該向外暴露的接口(能通過對象訪問的成員)都聲明為 public,不希望外部知道、或者只在類內部使用的、或者對外部沒有影響的成員,都建議聲明為 private。

根據C++軟件設計規范,實際項目開發中的成員變量以及只在類內部使用的成員函數(只被成員函數調用的成員函數)都建議聲明為 private,而只將允許通過對象調用的成員函數聲明為 public。

另外還有一個關鍵字 protected,聲明為 protected 的成員在類外也不能通過對象訪問,但是在它的派生類內部可以訪問。

有的人心里產生了新的疑問,將成員變量都聲明為 private,如何給它們賦值呢,又如何讀取它們的值呢?

我們可以額外添加兩個 public 屬性的成員函數,一個用來設置成員變量的值,一個用來獲取成員變量的值。上面的代碼中,setname()、setage()、setscore() 函數就用來設置成員變量的值;如果希望獲取成員變量的值,可以再添加三個函數 getname()、getage()、getscore()。

給成員變量賦值的函數通常稱為 set 函數,它們的名字通常以set開頭,后跟成員變量的名字;讀取成員變量的值的函數通常稱為 get 函數,它們的名字通常以get開頭,后跟成員變量的名字。

這種將成員變量聲明為 private、將部分成員函數聲明為 public 的做法體現了類的封裝性。所謂封裝,是指盡量隱藏類的內部實現,只向用戶提供有用的成員函數。

private和public的解說

聲明為 private 的成員和聲明為 public 的成員的次序任意,既可以先出現 private 部分,也可以先出現 public 部分。如果既不寫 private 也不寫 public,就默認為 private。

在一個類體中,private 和 public 可以分別出現多次。每個部分的有效范圍到出現另一個訪問限定符或類體結束時(最后一個右花括號)為止。但是為了使程序清晰,應該養成這樣的習慣,使每一種成員訪問限定符在類定義體中只出現一次。

類聲明也示例:

class Student{ private:char *m_name; private:int m_age;float m_score; public:void setname(char *name);void setage(int age); public:void setscore(float score);void show(); };

總結

以上是生活随笔為你收集整理的C++类成员的访问权限以及类的封装的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 香蕉黄色片 | 中文字幕久久精品 | 中文字幕久久熟女蜜桃 | 久久久亚洲欧美 | 国产乱国产乱 | 在线视频 一区二区 | 亚洲资源网| 色咪咪网站 | 秋霞视频一区二区 | 久草免费资源 | 国产特级aaaaaa大片 | 瑟瑟视频在线 | av黄色影院 | 亚洲精品一线二线三线 | 欧美日韩成人网 | 91成人免费网站 | 荫道bbwbbb高潮潮喷 | 性史性农村dvd毛片 日韩精品在线视频观看 | 国产精品男女视频 | 一级在线免费观看 | 久久无码性爱视频 | 亚洲欧美韩日 | 福利国产片 | 女人被男人躁得好爽免费视频 | 久久涩综合 | 精品国产高清在线观看 | 国产麻豆91视频 | 雪花飘电影在线观看免费高清 | 日韩极品在线观看 | 青青草视频在线免费观看 | 色香蕉影院 | 亚洲精品无码久久久久久久 | 成人羞羞免费 | 精品99在线观看 | 少妇高潮一区二区三区四区 | 亚洲影音先锋 | 午夜在线看片 | 国产女同91疯狂高潮互磨 | 国产又粗又大又爽视频 | julia一区二区 | 黄色免费在线观看视频 | 一区二区三区不卡视频在线观看 | 男人操女人网站 | 欧美三级一区 | 久久国产一级片 | xxx毛片 | 亚洲一区成人在线 | www视频在线免费观看 | 色女人av| 精品无码在线视频 | 日韩中文在线一区 | 成人免费激情视频 | 成人免费看毛片 | 顶级尤物极品女神福利视频 | 69一区二区 | 日韩av在线播放一区 | 一级全黄裸体免费观看视频 | 一区二区乱子伦在线播放 | 少妇不卡视频 | 青青操av在线 | 天天草av | 一级黄色片在线观看 | 日韩欧美黄色网址 | 国产91在线观看 | 香蕉av网站 | 一区二区三区福利 | 成人免费在线小视频 | aaa亚洲精品| 国内免费精品视频 | 午夜插插| 香蕉综合网 | 国模私拍av | 美女扒开腿男人爽桶 | 中文字幕一区日韩 | 国产视色| 最近中文字幕免费视频 | 日韩中文字幕在线观看视频 | 搞中出| 精品国产综合 | 四虎免费在线观看 | 欧美a在线视频 | ass精品国模裸体欣赏pics | 亚洲天堂av一区二区三区 | 内射合集对白在线 | 丰满熟女人妻一区二区三 | 男人和女人做爽爽视频 | 精品国产青草久久久久96 | 人妻夜夜爽天天爽 | 国产v在线 | 国产精品毛片一区二区在线看舒淇 | 色婷综合 | 91精品国产综合久久福利 | 亚洲色图欧美日韩 | 国内精品视频 | 日韩一级片av | 激情综合亚洲 | 99青青草| 悠悠色综合网 | 午夜剧场在线 |