지금까지 C#의 추상메소드 개념인줄


생성자 호출될때 초기화 편하게 하려고 <밑의 소스 C#> 구현해놓고 요 개념 그대로 C++로 구현하려니 구현이 안됨.


그래서 템플릿으로 초기화하는 방법으로 쫘놨더니


꼰대 상사한테 C#때문에 버릇 나빠진다는 소리도 들음 시벌 ㅋㅋㅋㅋㅋㅋㅋㅋ


//C++ 얜 안되서 템플릿으로 뺌

class A

{

public :

A()

{

InitCallback(); <= 구현체가 없어서 안됨.

}

virtual void InitCallback() = 0; 

};


class CppB : public A

{

public :

void InitCallback() override;

public :

template <class T>

static T* NewCreate();

};


template <class T>

inline T* CppB::NewCreate()

{

T* obj = new T();

obj->InitCallback();

return obj;

}


void CppB::InitCallback()

{

printf("TESt");

}




//C# 얜 원래 돼!

public abstract class B

{

public B()

{

Foo();

}

protected abstract void Foo();

}

class C : B

{

protected override void Foo()

{

//override 된 함수 Init이라면 Init 자동 호출

}

}