c++ - Difference between A* pA = new A; and A* pA = new A(); -
In C ++, what is the exact difference between the following dynamic object creations:
A * PA = New A; A * PA = New A (); I did some tests, but it seems that in both cases, the default constructor is called and only this. I am looking for any difference in performance ...
thanks
If In all cases, This is clearly different behavior for POD types, but non-POD affects non-union class types without an experiment declared constructor. Example When someone is ISO 14882: 2003 References: 5.3.4 [expr.new] / 15: How a 12.1 [class.ctor] / 7,8: Form is a user-written constructor that matches the definition of a defined default constructor. 12.6.2 [class.base.init] / 4: How are the members of the consortor initiated the chairs and members not listed in the initial list. A is a POD-type, then New A will allocate a new A object but leave it with an indefinite value, otherwise New code will be new default initialize new object. new A () start the value new A object. struct A {int a; Std :: String S; }; A is a non-POD class type without a user-defined constructor when a A is default starting which is defined defined constructor which calls the default constructor for s (a non-POD type), but A is not initiated . A the value is initially , because its use is not a declared constructor, all its members are started which means that the default constructor for s is called and a is zero initialized .
new allocated by expression Whether the items have been abandoned or not, besides a pair of parentheses or otherwise. 8.5 [dcl.init] / 5: It means start zero , default start and start the price .
Comments
Post a Comment