一、面向過程編程VS面向對象編程(通過c語言和c++比較)
1.面向過程編程的特點
(1) c語言的特點
沒有深思熟慮的設計過程;
殘留很多低級語言特征;
c語言的目標是高效。
(2)面向過程程序設計
用途:主要解決科學計算問題,用戶需求簡單而固定
特點:
分析解決問題所需要的步驟;
利用函數實現各個步驟;
依次調用函數解決問題;
問題:
軟件可重用性差
軟件維護性差
構建的軟件無法滿足用戶需求
2.面向對象編程特點
(1)面向對象程序設計
用途:將現實世界中的事物直接映射到程序中,可直接滿足用戶需求。
特點:
直接分許用戶需求中涉及的各個實體;
在代碼中描述現實世界中的實體;
在代碼內關聯各個實體協同工作解決問題。
優勢:
構建的軟件能夠適應用戶需求的不斷變化;
直接利用面向過程方法的優勢而避開其劣勢。
(2)c++特點:是一種引入了面向對象設計方法,并且兼容c語言的高效的面向對象語言。
二、c++對c的升級
1.聲明和定義
(1)c++中更強調語言的“實用性”,所有變量都可以在需要使用時再定義。
#include<iostream> usingnamespacestd; intmain(){ for(inti=0;i<5;i++) { cout<<i<<endl; } return0;}(2)c語言中的定義必須在作用域開始的位置開始定義。
2.register關鍵字的變化
(1)register請求編譯器將將局部變量盡可能存儲在cpu的寄存器中,以加快其存儲速度。
c語言中無法取得register變量的地址。
(2)在c++中依然堅持register關鍵字
c++編譯器有自己的優化方式,不實用register也可能做優化;
c++中可以取register變量的地址;
(PS:c++ 中,程序中取register變量地址時,register對變量的聲明變得無效)
3.const關鍵字
(1)const一般用于修飾形參,保護實參的值不被修改;
(2)const修飾的變量初始化時要賦初值;
c語言中,被const修飾的變量是只讀變量,不可通過變量名修改其值,但是可以修改其空間的內容;
c++中,當變量被const修飾時,即變為常量,不可通過任何方式修改其值。
4.c++中的動態內存分配
(1)c++中通過new關鍵字進行動態內存申請;
(2)c++中的動態內存申請是基于類型進行的;
Type* pointer = new Type; //變量申請Type *array = new Type[100]; //數組申請(3)delete關鍵字用于內存釋放。
其他示例:
char (*pp)[100] = new char[100][100]; //二維數組要用一維數組指針來接char (*ppp)[100][100] = new char[100][100][100];//三維數組要用二維數組指針……delete [] pp;delete [] ppp;……
5.new關鍵字與malloc函數的區別
(1)new關鍵字是c++的一部分(是運算符),malloc是由c庫提供的函數;
(2)new以具體類型為單位進行內存分配,malloc只能以字節為單位進行內存分配;
(3)new在申請單個類型變量時可進行初始化,malloc不具備內存初始化。
int *p = new int(5); //*p指向的空間中保存的值為5
新聞熱點
疑難解答
圖片精選