This is a simple question :
Does using new operator return a pointer of type (void *)?
Referring to What is the difference between new/delete and malloc/free? answer - it says new returns a fully typed pointer while malloc void *
But according to http://www.cplusplus.com/reference/new/operator%20new/
throwing (1)
void* operator new (std::size_t size) throw (std::bad_alloc);
nothrow (2)
void* operator new (std::size_t size, const std::nothrow_t& nothrow_value) throw();
placement (3)
void* operator new (std::size_t size, void* ptr) throw();
which means it returns a pointer of type (void *), if it returns (void *) I have never seen a code like MyClass *ptr = (MyClass *)new MyClass;
I have got confused .
EDIT
As per http://www.cplusplus.com/reference/new/operator%20new/ example
std::cout << "1: ";
MyClass * p1 = new MyClass;
// allocates memory by calling: operator new (sizeof(MyClass))
// and then constructs an object at the newly allocated space
std::cout << "2: ";
MyClass * p2 = new (std::nothrow) MyClass;
// allocates memory by calling: operator new (sizeof(MyClass),std::nothrow)
// and then constructs an object at the newly allocated space
So MyClass * p1 = new MyClass
calls operator new (sizeof(MyClass))
and since throwing (1)
it should return
void* operator new (std::size_t size) throw (std::bad_alloc);(void *)
if I understand the syntax correctly.
Thanks