網(wǎng)站建設(shè)運(yùn)營(yíng)怎么辦seo網(wǎng)絡(luò)營(yíng)銷(xiāo)推廣公司深圳
目錄
1.簡(jiǎn)介
2.底層
1.簡(jiǎn)介
new是升級(jí)版的malloc,它會(huì)先開(kāi)空間再去調(diào)用構(gòu)造函數(shù)。
delete是升級(jí)版的free,它會(huì)先調(diào)用析構(gòu)函數(shù)再free掉空間。
class A
{
public:A(int a1=0, int b1=0){a = a1;b = b1;}private:int a;int b;
};int main()
{//new會(huì)先開(kāi)空間再調(diào)用構(gòu)造函數(shù)A* p1 = new A;A* p2 = new A(1, 1);//new多個(gè)對(duì)象并調(diào)用構(gòu)造函數(shù)初始化A* p3 = new A[3];//隱式類(lèi)型轉(zhuǎn)換:先構(gòu)造出臨時(shí)對(duì)象再調(diào)用拷貝構(gòu)造A* p4 = new A[3]{ {1,2},{2,3},{3,5} };//運(yùn)用匿名對(duì)象初始化,先是構(gòu)造匿名對(duì)象,再拷貝構(gòu)造(編譯器會(huì)優(yōu)化成一次構(gòu)造)A* p5 = new A[3]{ A(1,1),A(2,2),A(3,3) };//delete會(huì)先調(diào)用析構(gòu)函數(shù),再free掉空間delete p1;delete p2;delete [] p3;delete [] p4;delete [] p5;return 0;
}
2.底層
//模擬底層//先是開(kāi)空間,這里和malloc沒(méi)區(qū)別
A* p6 = (A*)operator new(sizeof(A));
//顯式調(diào)用構(gòu)造函數(shù)
new(p6)A(1, 2);//顯式調(diào)用析構(gòu)函數(shù)
p6->~A();
//釋放空間
operator delete (p6);