CBase *base = new CDerived();
CBase *base = new CDeviced;
对于自定义类型,调用的都是无参构造函数,没区别的。
只不过对于内建类型不太一样,加了扩号会做默认值初值化
比如(在VS 2010上验证):
int* p = new int;//p指向的int值是不确定的;int* q = new int();//q指向的int值为0。
参考 http://bbs.youkuaiyun.com/topics/320161716
本文探讨了C++中使用new操作符创建对象时,不带括号与带括号的区别。对于自定义类型,这两种方式都调用无参构造函数,但对于内置类型,带括号的形式将进行值初始化。
CBase *base = new CDerived();
CBase *base = new CDeviced;
对于自定义类型,调用的都是无参构造函数,没区别的。
只不过对于内建类型不太一样,加了扩号会做默认值初值化
比如(在VS 2010上验证):
int* p = new int;//p指向的int值是不确定的;int* q = new int();//q指向的int值为0。
参考 http://bbs.youkuaiyun.com/topics/320161716
3773
1475

被折叠的 条评论
为什么被折叠?