为了账号安全,请及时绑定邮箱和手机立即绑定

定义的时候直接Coordinate *P1 = new Coordinate,这样写对不对呢?

Coordinate *P1 = NULL;

P1 = new Coordinate;加不加括号都对,

那么Coordinate *p2 = new Coordinate()加上括号和不加括号也都正确吗?

正在回答

1 回答

这两种写法对于有默认构造函数的类对象来说没有区别,这两种写法都是调用其默认构造函数。所以如果Coordinate有默认构造函数,这样的写法就没区别。没有默认构造函数的话,这两种写法都编译不过。


另外,这两种写法对于built-in类型是有区别的:

不带括号时,构造的对象是default initialized,对于built-in类型,这种情况下初值是不确定的。

带空括号时,对象是value initialized,对于built-in类型来说,初值一般是0。


2 回复 有任何疑惑可以回复我~
#1

zdzdzd 提问者

非常感谢!
2015-09-06 回复 有任何疑惑可以回复我~
#2

热喷Redpen

感谢!
2016-08-18 回复 有任何疑惑可以回复我~
#3

热喷Redpen

还有一个小问题:“built-in类型”是什么?
2016-08-18 回复 有任何疑惑可以回复我~
#4

onemoo 回复 热喷Redpen

整型(int之类)、浮点型(double之类),还有void,当然不能new void。 不包括std中定义的那些模板容器类型什么的。
2016-08-19 回复 有任何疑惑可以回复我~
#5

热喷Redpen 回复 onemoo

谢谢!
2016-11-21 回复 有任何疑惑可以回复我~
查看2条回复

举报

0/150
提交
取消
C++远征之封装篇(下)
  • 参与学习       70919    人
  • 解答问题       514    个

封装--面向对象三大特征之一,通过案例让C++所学知识融会贯通

进入课程

定义的时候直接Coordinate *P1 = new Coordinate,这样写对不对呢?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信