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

new自定义类时 括号的问题

    // 使用new关键字,实例化对象
    Student *str = new Student;

Student *str = new Student();

我再电脑上运行了一下,结果是一样的。但是区别是什么?

正在回答

2 回答

都可以,当然你要调用含参构造函数时就必须带括号了。

C++和Java不同,Java都要括号的

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

这两种写法对于有默认构造函数的类对象来说没有区别,但对于built-in类型是有区别的:

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

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

而对于有默认构造函数的类对象,这两种写法都是调用其默认构造函数。

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

iNewCOS 提问者

多谢啦!查了一下:built-in类型就是内置类型了,像int,char,float,double等,相对于user-defined type,(用户自定义类型)而言,就是自己定义的类啊,结构啊什么的
2015-08-28 回复 有任何疑惑可以回复我~
#2

onemoo 回复 iNewCOS 提问者

是的,这两种写法对于这些内置类型来说还有略有区别的。
2015-08-28 回复 有任何疑惑可以回复我~

举报

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

封装--面向对象的基石,本教程力求帮助小伙伴们即学即会

进入课程

new自定义类时 括号的问题

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