c++ new和括号的问题

来源:互联网 发布:警惕网络陷阱ppt 编辑:程序博客网 时间:2024/05/24 01:40

以前看过一个帖子,就是讨论这个问题的。原址如下:
http://bbs.csdn.net/topics/320161716

总结起来,我比较相信下面的答案:


对于自定义类型,调用的都是默认构造函数,没区别的。如果没有定义默认构造函数,编译器会报错。


只不过对于内建类型不太一样,加了扩号会做默认值初值化,比如:
int* p = new int;//p指向的int值是不确定的;
int* q = new int();//q指向的int值为0。


对于变量的定义,
A a(); // 在任何时候都表示一个函数定义,返回值为A类型。
A a;   // 表示使用不带参数的构造函数,或者有默认参数值的构造函数。