new[] 和new()的区别?

SeanHwang 2008-11-25 07:47:41
*p = new char[100];
*p = new char(100);
这两句到底有什么区别呢?
...全文
121 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jackzhhuang 2008-11-25
  • 打赏
  • 举报
回复
一个调用:
template<class T>
T* operator new(size_t);

一个调用:
template<class T>
T* operator new[](size_t, size_t);



kingteng 2008-11-25
  • 打赏
  • 举报
回复
第一个是分配了100个char空间,但是不初始化,只是原始空间
第二个是分配了一个char空间,并且初始化为100
lann64 2008-11-25
  • 打赏
  • 举报
回复
new []和new根本就是两个不同的操作。
要是重载操作符的话也是分开做两个不同的操作符。
可以理解为是两个名字相像、功能相近的两个完全不同的函数。
一定要,也完全可以吧他们重载成完全不一样的函数。他们之间没有依存和调用关系。
SimonFu 2008-11-25
  • 打赏
  • 举报
回复
第一个是分配char数组
第二个是使用构造函数分配一个char对象
天空海阔66 2008-11-25
  • 打赏
  • 举报
回复
*p = new char[100]; //申请100个字符空间,没有初始化这些空间.[]是数组符号.
*p = new char(100); //申请1个字符空间,用100来初始化这个空间.()"函数符号"可以看做是调用char的构造函数.
霍大脚 2008-11-25
  • 打赏
  • 举报
回复
第一个是申请一个100大小的字符数组空间就
第二个是申请一个char大小的空间,并把100赋给他
BaihowFF 2008-11-25
  • 打赏
  • 举报
回复
顺便在说下...
C++中[]叫做取下标...用new的时候这东西就是管分配多少的...[100]就是100个...
而()这样的小括号..一般用于初始化...所以构造函数调用的时候...初始化内容习惯就写在括号里...当然...声明的时候用等于也是一样的...看不习惯而已...
BaihowFF 2008-11-25
  • 打赏
  • 举报
回复
第一个是给100个char空间...
第二个是给一个空间...赋值为100...也就是d

64,641

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧