STL 소스 (DinkumWare, SGI, STLport 등)를 파고 구현 선택에 대한 이해를 시도하는 동안 (내가 잘 진행되고 있음), 조금 이상하거나 오히려 전에 결코 흘러 가지 않는 ive.상속, 의사 다형성
일반적으로 파생 클래스에서 멤버 함수를 오버로드하려면 기본 클래스 멤버 함수 시그너처 앞에 가상 키워드를 추가합니다. 그러나 STL 소스의 여러 지점에서는 그렇지 않습니다.
template <typename T> class A {
public:
void func() { std::cout << "inside A func()" << std::endl; }
};
template <typename T> class B : public A<T> {
public:
void func() { std::cout << "inside B func()" << std::endl; }
};
컴파일러는 내가 라인을 따라 오류 뭔가를 기대 한대로이 의사 다형성과 잘 보인다 여기
내가 STL 구현에보고하고있는 무슨의 컷 다운 버전입니다 of :error C2535: 'void B<T>::func(void)': member function already defined or declared
여기에 무슨 일이 일어나고 있는지 설명 할만큼 친절한 사람이 있습니까?
추신 : 이것은 또한 클래스가 템플릿이 아니더라도 작동하는 것 같습니다.
은 '
감사합니다, 당신은 매일 새로운 것을 배웁니다! 이제는 그것이 합리적이라고 언급했습니다. – rtlayzell