int SOME_API(string className); // <-- 이런 게 있다고 치자고

class A {
public:
    A(string name) : _name(name) {}
protected:
    string _name;
};

A* a = new A("This is A");
이런 식으로만 쓸 예정인데

new를 재정의해서

void* A::operator new(size_t s) {
   if(SOME_API("A")) return malloc(s);     // API가 성공할 때만 메모리를 할당
   else return 0;
}

그러면 A* a = new A("This is A")
if(a) ...
else ...
이런 식으로 쓰려고 하는데

class B : virtual public A {
public: 
    B(string name, int age) : A(string name) {
        _age=age;
    }
protected:
    int _age;
};

B::operator new도 죄다 새로 만들어줘야 할까?