나는 아래의 코드에 대한 컴파일러 오류에 대한 혼란 스러워요 :혼란에 대한 가상 과부하 기능
class Base {
public:
virtual ~Base() { }
virtual void func() { }
virtual void func (int) { }
virtual void another() { }
virtual void another (int) { }
};
class Derived : public Base {
public:
void func() { }
};
int main() {
Derived d;
d.func();
d.func(0);
d.another();
d.another(0);
}
GCC 4.6.3를 사용은, 위의 코드 (0) :: 그 Dervied 말을 d.func에서 오류가 발생합니다 func (int)가 정의되지 않았습니다.
또한 func (int)에 대한 정의를 Derived에 추가하면 작동합니다. 파생 함수에서 func() 또는 func (int)를 정의하지 않을 때도 ("다른"의 경우와 같이) 작동합니다.
여기에 가상 오버로드 된 기능에 대한 몇 가지 규칙이 분명히 있지만, 처음 만났을 때 이해가되지 않습니다. 누군가 정확히 여기에 무슨 일이 일어나는지 말해 줄 수 있니?
를 볼 감사 이봐! ! 팁 - Woverloaded-virtual과 픽스는 정말 유용했습니다. 내가 가지고 있는지조차 몰랐던 질문에 대한 훌륭한 대답. :-) –