課程
/后端開發
/C++
/C++遠征之封裝篇(上)
為什么把setName()、getName()叫做封裝函數?什么情況下這么稱呼
2016-06-10
源自:C++遠征之封裝篇(上) 4-3
正在回答
因為封裝好了之后,對數據的操作才是有規有矩的。如果不封裝,完全可能出現這樣的情況:
class?Student?{ public: ??string?stuName; }; int?main()?{ ??Student?stu; ??stu.stuName?=?3; ??return?0; }
這樣明顯是不合法的(把數字付給字符串),但是這樣在編譯的時候不會出錯,只有在運行的時候才能體現出來。
但是如果封裝了的話,就會是這樣:
class?Student?{ public: ??void?setName(string?name){????????//設置stuName的值; ????stuName?=?name; ??} ??string?getName()?{????????//獲取stuName的值; ????return?stuName; ??} private: ??string?stuName;????????//因為stuName是private,所以下面的實例對象不能直接訪問 }; int?main()?{ ??Student?stu; ??stu.setName(3);???????? ??//這里傳入3是會報錯的,因為在定義這個函數的時候就指明了傳入的必須是一個string類型。 ??stu.setName("小明"); ??cout?<<?stu.getName()?<<?endl;???????? ??//在獲取屬性的時候也不用擔心對屬性值產生影響,這樣無疑是非常安全的。 ??return?0; }
就是這樣,覺得有用就采納吧!
燈心人 提問者
p1.className不應該是one嗎?ChinaGDG的演講者的分享視頻吧
舉報
封裝--面向對象的基石,本教程力求幫助小伙伴們即學即會
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-06-10
因為封裝好了之后,對數據的操作才是有規有矩的。如果不封裝,完全可能出現這樣的情況:
這樣明顯是不合法的(把數字付給字符串),但是這樣在編譯的時候不會出錯,只有在運行的時候才能體現出來。
但是如果封裝了的話,就會是這樣:
就是這樣,覺得有用就采納吧!
2022-03-25
p1.className不應該是one嗎?ChinaGDG的演講者的分享視頻吧