Class B;
B *b = new B(); // default constructor
B *b1 = new B(10); // constructor which takes an argument B(int x)
However, if we want to wr
Your question should be:
How compiler distinguish between
new B()andnew B(10), when theB::operator newsyntax is same ?
Well, new just allocates the memory and immediately after that the compiler inserts the call to the constructor. So it's irrespective if you call new B, new B() or new B(10).
Compiler interprets something like:
B *b = static_cast(B::operator new(sizeof(B)))->B();
B *b1 = static_cast(B::operator new(sizeof(B)))->B(10);
In actual a constructor doesn't return anything. But above pseudo code is just an analogical representation of internal stuff.