關於C++

類的私有成員訪問方式:數組

  1. 被該類的成員函數訪問(類的對象都不能直接訪問);函數

  2. 友元函數能夠訪問,在該類中定義友元函數(友元函數也能夠訪問該類的保護成員)spa

    例:class A{friend void func{};};  func函數稱爲類A的友元函數,可訪問類A的私有保護成員;
    指針

  3. 友元類,例: class A{ friend class B;} ;   class B{};  類B爲類A的友元類,可訪問A的私有成員。code



new的使用:對象

    判斷是否分配成功:內存

     new失敗會拋 bad_alloc異常,除非是nothrow,這個就判斷是否爲NULLssl

    對於throw new,catch bad_alloc異常;對於nothrow new,檢查返回的指針是否爲NULL;string

    new( nothrow )type;  //nothrow newclass

    待理解:(上述兩種new均可以經過set_new_handler在bad_alloc被拋出或者nothrow new返回NULL前對分配失敗的狀況進行處理。)

    爲何用new不用malloc?     用new的時候會發生兩件事,首先,內存被分配,而後,爲被分配的內存調用一個或多個構造函數,而malloc只會分配內存。


Delete的使用:

    有兩種使用形式,delete p,delete []p,第一種是刪除一個對象,第二種是刪除多個對象,必須對應以前new的操做。

     例:(來源:Effective C++)

string *stringptr1 = new string;
string *stringptr2 = new string[100];

...

delete stringptr1;// 刪除一個對象
delete [] stringptr2;// 刪除對象數組


typedef string addresslines[4];	//一我的的地址,共4行,每行一個string
				//由於addresslines是個數組,使用new:
string *pal = new addresslines;	// 注意"new addresslines"返回string*, 和
				// "new string[4]"返回的同樣
delete時必須以數組形式與之對應:
delete pal;// 錯誤!
delete [] pal;// 正確
相關文章
相關標籤/搜索