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