new 一个对象的时候加括号和不加括号有什么区别?
看一些代码在new对象的时候都加上(),可是我的习惯是都不加(),不知道这个到底是什么区别?有人说new对象的时候应该加上(),否则编译出错,但是我的程序编译器并没有报错!
比如:
CBase *base = new CDerived();
CBase *base = new CDeviced;
[解决办法]
如果是空括号,都是调用缺省构造器,加不加效果一样
[解决办法]
应该是效果一样的
[解决办法]
对于自定义类型,调用的都是默认构造函数,没区别的。
只不过对于内建类型不太一样,加了扩号会做默认值初值化,比如:
int* p = new int;//p指向的int值是不确定的;
int* q = new int();//q指向的int值为0。