小河學習日記--C與C++不同之處出

C與C++的不同之處(只講區別,C++有而C沒有的,請聽下回分解)

一.內存管理
1.C使用的時malloc/free,malloc再分配內存時是一頁一頁的分配的,當使用malloc時操作系統會直接批發32頁內存,所以使用malloc時,如果沒有後續在堆內存上的操作了,是可以越界的。
例如如:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int* p=malloc(4);
*p=4;
*(p+1)=5;
printf("%d\n%d",p,(p+1));
}
在這裏插入圖片描述
這樣就是可以訪問成功了。另外使用malloc會導致很多內存碎片,這是無法避免的
2.new會自動計算類型所需的字節數,並從堆中分配相應的內存,返回內存的首地址,而malloc不會。
3.new/delete會自動調用類的構造函數和析構函數
4.new申請的內存會在內存前一個字節記錄這塊內存所存放數據的數量
二.static
c++完美的繼承了c在static上的所有用法。並對其做出了擴展,
C++中的static可以運用到成員變量和成員函數上面,將其編程靜態成員變量和靜態成員函數
靜態成員需要在類內申明,但必須在類外定義和初始化,和成員函數一樣需要加 "類名::"限定符表示它屬於那個類,但不需要加static
#include
#include
using namespace std;

class User
{
static char name[20];//類中的申明
char pass[20];
public:
User(const char* name,const char* pass)
{
strcpy(this->name,name);
strcpy(this->pass,pass);

}
void show()
{
    cout<<name<<" "<<pass<<endl;
}

};
char User::name;//類外定義
int main()
{
User user(“hehe”,“z234”);
}

三.const
C++對const的檢查更加嚴格,而且被const修飾過的變量,編譯器只會對其取一次的值,而C不會。所以const在c++中更加安全
四.void*
void*在C中是一個萬能指針,可以對任意變量賦值,而在C++中不行,需要強制轉換,因爲C++對類型的檢查更加嚴格

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