c++中new用法

c++new后面接什么我怎么看有的接的是构造函数有的时候接的是类CBitmap*bmp=newCBitmap;还是CBitmap*bmp=newCBitmap();... c++
new后面接什么
我怎么看有的接的是构造函数有的时候接的是类
CBitmap* bmp=new CBitmap;
还是CBitmap* bmp=new CBitmap();
展开
 我来答
艳阳高照的午后
2015-06-26 · TA获得超过1万个赞
知道大有可为答主
回答量:1.2万
采纳率:97%
帮助的人:4963万
展开全部
  new有三种使用方式:plain new,nothrow new和placement new。

  (1)plain new顾名思义就是普通的new,就是我们惯常使用的new。在C++中是这样定义的:
  void* operator
  new(std::size_t) throw(std::bad_alloc);
  void operator delete(void *)
  throw();

  提示:plain
  new在分配失败的情况下,抛出异常std::bad_alloc而不是返回NULL,因此通过判断返回值是否为NULL是徒劳的。

  (2)nothrow new是不抛出异常的运算符new的形式。nothrow
  new在失败时,返回NULL。定义如下:
  void * operator new(std::size_t,const
  std::nothrow_t&) throw();
  void operator delete(void*) throw();

  (3)placement
  new意即“放置”,这种new允许在一块已经分配成功的内存上重新构造对象或对象数组。placement
  new不用担心内存分配失败,因为它根本不分配内存,它做的唯一一件事情就是调用对象的构造函数。定义如下:
  void* operator
  new(size_t,void*);
  void operator
  delete(void*,void*);

  提示1:palcement
  new的主要用途就是反复使用一块较大的动态分配的内存来构造不同类型的对象或者他们的数组。

  提示2:placement
  new构造起来的对象或其数组,要显示的调用他们的析构函数来销毁,千万不要使用delete。

  char* p = new(nothrow)
  char[100];
  long *q1 = new(p) long(100);
  int *q2 = new(p)
  int[100/sizeof(int)];
发狂的蜜蜂
2011-07-19 · TA获得超过891个赞
知道小有建树答主
回答量:983
采纳率:0%
帮助的人:850万
展开全部
一样的。接类名,等于用默认构造函数,一种简写。
因为构造函数很可能不只一个,如果要使用非默认构造函数,那么就要自己明确指定。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
aaaa9813
2011-07-19 · TA获得超过127个赞
知道小有建树答主
回答量:486
采纳率:50%
帮助的人:233万
展开全部
你首先要知道new是干什么的,它是用来分配内存空间的,它根据后面的描述自动计算分配空间,并返回该空间地址(指针),举个例子,就好比你申请建一个(平房)房子,你就要“new 平房”
然后,系统会告诉你房子的地址(指针),你就可以去住了,明白了吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bhsbhsbhsbhs
2011-07-19 · 超过36用户采纳过TA的回答
知道答主
回答量:196
采纳率:0%
帮助的人:114万
展开全部
通常new其实做了二件事情
1.分配内存
2.调用构造函数

楼主的写法没问题,如果楼主想要有更进一步的了解,多google下
例如:http://tech.e800.com.cn/articles/2010/415/1271300717730_1.html
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ask_why
2011-07-19 · 超过17用户采纳过TA的回答
知道答主
回答量:148
采纳率:0%
帮助的人:70万
展开全部
类型名和构造函数都可以,如果是类型名,则会调用该类型的默认构造函数来初始化一个类对象,而如果是构造函数,那就会创建一个对象,该对象是用构造函数里面的值来初始化。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式