-
兩類典型的class
- 含有指針成員
- 不含指針成員
- 指針成員會對class的操作造成一些本質(zhì)性的影響彩库,主要源于資源的生命期管理
-
拷貝構(gòu)造
- 默認拷貝構(gòu)造的問題,進行了淺拷貝,這會造成困擾隅津,原有的成員泄露出去了,新成員被多個實例引用
- 進行深拷貝就好了劲室,自己寫拷貝構(gòu)造函數(shù)
-
賦值運算符同上
- 另外要注意自身賦值的問題伦仍,防止造成內(nèi)容丟失
-
三個重要成員函數(shù)
- 拷貝構(gòu)造
- 賦值運算符
- 析構(gòu)函數(shù)
含有指針成員的class必須有拷貝構(gòu)造函數(shù)和賦值運算符,除非禁用
-
堆和棧
堆棧的概念是和生命期直接相關(guān)的很洋,棧上的對象生命期由函數(shù)調(diào)用來管理充蓝,堆上對象的生命期由程序員手工管理,其實這是很好理解的,因為棧區(qū)是連續(xù)的谓苟,重置棧底自然就銷毀了對象
堆區(qū)對象是完全通過引用被外界持有的官脓,所以需要手動控制生命期
靜態(tài)成員(類成員)的生命期持續(xù)到程序結(jié)束,用于共享屬性涝焙,單例等情況
new和malloc的區(qū)別卑笨,malloc分配出來的是原始內(nèi)存(void*),new出來的是初始化過的對象
-
靜態(tài)變量和靜態(tài)方法
- 靜態(tài)變量和靜態(tài)方法是被所有類成員所共享的
- 靜態(tài)方法只能訪問靜態(tài)成員函數(shù)
- 靜態(tài)成員必須初始化后才能使用
- 靜態(tài)函數(shù)可以直接通過類名調(diào)用仑撞,也可以通過實例調(diào)用