C++ new运算符

new 分配的数据类型:内置数据类型、自定义数据类型。数组

若是不成功,则 new 将返回零或引起异常;编写自定义异常处理例程并调用 _set_new_handler运行库函数(以您的函数名称做为其参数),可更改此默认行为。函数

new 为 C++ 类对象分配内存时,将在分配内存后调用对象的构造函数。仅当类具备默认构造函数时,new 运算符才会建立对象的数组。指针

分配多维数组时,除第一个维度以外的全部维度必须是计算结果为正值的常量表达式;最左侧的数组维度能够是计算结果为正值的任何表达式。new 运算符分配数组时,第一个维度可为零 ,此时new 运算符返回一个惟一指针。code

例子:分配一个二维数组,而后释放,数组的大小为 zhm x 10对象

    一、char (*p)[10] = new char[zhm][10]; delete[] p;  内存

    二、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;get

    三、若是 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;

相关文章
相关标签/搜索