C++new运算符

本文介绍了C++中new运算符的使用。它可分配内置和自定义数据类型,分配失败会返回零或引发异常,可更改默认行为。为类对象分配内存后会调用构造函数,仅类有默认构造函数时可创建对象数组。还给出了分配多维数组的示例及注意事项,且new不能分配引用类型和函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值