C++ new運算符


new 分配的數據類型:內置數據類型、自定義數據類型。

如果不成功,則 new 將返回零或引發異常;編寫自定義異常處理例程並調用 _set_new_handler運行庫函數(以您的函數名稱作為其參數),可更改此默認行為。

new 為 C++ 類對象分配內存時,將在分配內存后調用對象的構造函數。僅當類具有默認構造函數時,new 運算符才會創建對象的數組。

分配多維數組時,除第一個維度之外的所有維度必須是計算結果為正值的常量表達式;最左側的數組維度可以是計算結果為正值的任何表達式。new 運算符分配數組時,第一個維度可為零 ,此時new 運算符返回一個唯一指針。

例子:分配一個二維數組,然后釋放,數組的大小為 zhm x 10

    1、char (*p)[10] = new char[zhm][10]; delete[] p;  

    2、int m=2,n=3; int **p = new int*[m]; for(int i=0;i<m;i++)  p[i] = new int[n];  ... for(int i=0;i<m;i++) delete[] p[i]; delete[] p;

    3、如果 2 這樣寫:int **p ; p =new int* [m] ;  for(int i=0;i<m;i++)  p[i] = new int[n]; 萬萬不可寫成: (*p) =new int [m] ;

 變量不能包含 const、volatile、類聲明或枚舉聲明。 非法:volatile char * p = new volatile char[10];

new 運算符不會分配引用類型,因為這些類型不是對象。

new 運算符無法用於分配函數,但可用於分配指向函數的指針。 下面的示例 為 返回整數的函數 分配一個包含 7 個指針的數組,然后釋放。

    int (**p)() = new (  int (*[7])()   ); delete *p;

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM