用自己的語言講一下"類",自問自答:
1流椒、為什么要有類敏簿?
之前的編程都是基于過程,最多就是把過程提取出來宣虾,形成函數(shù)惯裕,但一旦有大量的相似重復的數(shù)據(jù)時绣硝,不以數(shù)據(jù)為中心反而不好管理蜻势,比如需要用到很多學生、老師鹉胖、工人够傍,之前最好的方式就是定義struct冕屯,但這樣既不方便又不安全愕撰,而且不能處理學生搞挣、老師音羞、工人的一些動作,只要涉及動作窘面,就要定義函數(shù)翠语。
于是把數(shù)據(jù)抽象化,提取出一些特征财边,就有了成員變量肌括。此外,還可以對抽象的“類”定義動作酣难,專屬于它的動作谍夭,就有了成員函數(shù)。把成員函數(shù)和成員變量“包裝”到一起憨募,就形成了類紧索。
2、類和對象有什么區(qū)別菜谣?
類是抽象的珠漂,對象是具體的。比如學生是一個類尾膊,抽象甘磨,泛指一種人,有很多特征和動作眯停,比如姓名济舆、學校,吃飯莺债、上課滋觉。學生-小明签夭,就是個具體的對象。
3椎侠、為什么需要私有第租、保護、公共我纪?
成員函數(shù)和成員變量慎宾,都有著這三種屬性。
私有浅悉,體現(xiàn)在封裝上趟据,有些成員只允許類自己訪問,外界只能通過(唯一)定義的公共成員函數(shù)去訪問术健,這樣這些私有的成員如果不對勁了汹碱,問題肯定出在(唯一)定義的公共成員函數(shù),一安全荞估,二也好定位問題咳促。
保護,體現(xiàn)在繼承上勘伺,會有這樣的需求:父類的某些成員允許子類訪問跪腹,但不許外界訪問,介于二者之間飞醉,產(chǎn)生了保護屬性冲茸。
公共,不言而喻冒掌,定義一個類,目的還不是為了讓人用......
4蹲盘、為什么需要友元函數(shù)股毫?
會有這樣的需求:有時候,我就是不想通過對象去訪問類里的成員召衔,比如操作符頻繁調(diào)用铃诬,比如存在多個自我中心(到底用哪個對象),于是需要一種可以不依賴對象苍凛,就能調(diào)用到類里的成員的方法趣席。
友元函數(shù)一般有兩個用處:運算符的重載、兩個類之間共享數(shù)據(jù)(比例矩陣乘向量)醇蝴。
由于會破環(huán)類的封裝性宣肚,所以一般不用
成員函數(shù)有this指針,而友元函數(shù)沒有this指針
友元函數(shù)是不能被繼承的悠栓,就像父親的朋友未必是兒子的朋友