다형성: 포인터/참조의 필요성
객체 지향 프로그래밍의 기본 개념인 다형성은 서로 다른 클래스의 객체를 공통 슈퍼클래스에 속하는 것처럼 처리됩니다. 힙에 메모리를 할당하면 동적 바인딩에 충분하다는 것이 직관적으로 보일 수 있지만 포인터나 참조가 없으면 근본적으로 다형성이 방해됩니다.
이유를 이해하려면 다음 예를 고려하세요.
Derived d; Base* b = &d;
이 시나리오에서 d는 스택에 있지만 다형성은 b에 대해 계속 작동합니다. 이는 b가 파생 클래스 인스턴스를 찾는 데 필요한 정보를 유지하기 때문입니다.
반면, 기본 클래스 포인터나 참조가 없으면 다형성이 작동할 수 없습니다. 고려 사항:
Base c = Derived();
슬라이싱으로 인해 c 개체는 파생 개체가 아닌 기본 개체로 인식됩니다. 다형성은 기술적으로 작동하지만 파생 클래스 개체는 본질적으로 손실됩니다.
마지막으로 아래 코드에서
Base* c = new Derived();
c는 잠재적으로 기본 또는 파생 개체를 포함하는 메모리 위치를 가리킵니다. . 호출자가 특정 클래스를 인식하지 못하기 때문에 가상 메서드 호출에 대해 동적 바인딩이 여전히 가능합니다.
따라서 다형성을 위해서는 포인터나 참조의 사용이 필수입니다.
위 내용은 다형성에 포인터/참조가 필수적인 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!