First:
int *p = new int;
Second:
class A{};
A *pa = new A;
How does new and compiler determines when to call constructor? In first case compiler does not generate code to call constructor of p and in second case it generates code to call constructor of A. Which mechanism is used to make such choice?
The compiler knows that A is a class, because it has seen the class declaration, so it uses the synthesised default constructor. It knows an int is an int, because the language grammar says it is.
In your case A is a POD as well. To learn the correct definition of POD's take a look at this.
As far as your code is concerned, the compiler knows that int is a built-in type and doesn't have a constructor whatsoever.
Edit: Your question is rather strange. The compiler knows which type is a pod, and which isn't, also it knows which are built-in and not-built in because it is the compiler that compiles your code :) If the compiler didn't know that information, who would?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With