C++入門

C和C++的區別:
1、C89標準中的C語言不支持函數的默認值, C++支持函數默認值,且需要遵循從右向左賦初始值
2、內聯函數
3、C語言中不存在函數重載,C++根據函數名參數個數參數類型判斷重載,屬於靜多態,必須同一作用域下才叫重載
4、C中const叫只讀變量, 只是無法做左值的變量,比如數組的下標,C++中const是真實的常量,可以當數組的下標,但是也可能退化成c語言的常量,默認生成local符號。
5、引用,引用的底層就是指針,使用時直接借引用,可以配合const對一個立即數進行引用。
6、malloc,free new delete
1、malloc和free是函數,但是new和delete是運算符
2、malloc在分配內存前需要大小,new不需要;malloc是根據字節數分配,但是new是根據類型分配,並且可以賦初值, int *p3 = new int (10);
3、malloc不安全,需要手動類型轉化,new不需要;
4、free只釋放空間,delete會先調用析構函數再釋放空間;new先調用構造函數在申請空間;
5、內存不足開闢失敗的返回值不同:malloc失敗返回0,new開闢失敗拋出bad_alloc異常
6、malloc開闢在堆區,new開闢在自由存儲區
7、c可以省略函數原型,但是c++不可以;

C語言的優點:出色的移植性, 訪問硬件, 運行效率高
缺點:拓展性差,複用性差,維護性差

C++:
封裝 - 維護性(bug定位)
繼承 - 複用性(拿來即用)
多態 - 提高拓展性、靈活性 (添加功能)

C語言 – register:
請求CPU將該變量存放在寄存器中,並不是一定放,放是否空閒寄存器
只能修飾局部變量,且不能取地址,同時放入寄存器是不變的值
還得看CPU的硬件是否支持該變量的類型

C++ : register: (語法糖)
可以取地址了,當取地址,就放回內存中

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章