int SOME_API(string className); // <-- 이런 게 있다고 치자고
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도 죄다 새로 만들어줘야 할까?
뭐하러 그래씀?
뭐하러 그래씀?
저 SOME_API()가 성공하지 못하면 A* a는 의미가 없거덩..
지금 보니까 if(SOME_API(\"A\")) return malloc(s); 이것도 if(SOME_API(typeid(this).name())) return malloc(s); 이렇게 써야겠군...되긴 되려나? ㅋ
찍어보고 돌려보면 알잖아 - _-)