Question: Suppose I have a class with overloaded `operator new`.

```
class Class {
public:
   void* operator new( size_t );
   void operator delete( void* );
};

```

Will objects of that class always be allocated with the overloaded `operator new` when I use `new Class()` or is it possible that the default `operator new` is used when `new Class()` construct appears in code?

Answer: 
Use scope-resolution operator (::) to call the global definition for `operator new`, otherwise it will always use the overloaded `operator new`, except ofcourse in case of `placement new operator` which is anyway not intended to be overloaded.

```
class Test {
public:
   void* operator new( size_t );
   void operator delete( void* );
};

int main()
{
Test* pTest1 = ::new Test();
Test* pTest2 = new Test();

/*
 do some stuff
*/

::delete pTest1;
delete pTest2;
return 0;
}

```

Note the use of corresponding definition for delete operator.
The only possible exception I can think of is placement new [(discussed here)](https://stackoverflow.com/questions/222557/cs-placement-new), but that's a different syntax.