>백엔드 개발 >C++ >순수 가상 함수가 '0'으로 초기화되는 이유는 무엇입니까?

순수 가상 함수가 '0'으로 초기화되는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-26 14:32:09125검색

Why are Pure Virtual Functions Initialized with `0`?

'0'으로 순수 가상 함수 초기화 이해하기

순수 가상 함수를 선언할 때 항상 다음에 할당된다는 것을 알 수 있습니다. 값 0:

virtual void fun() = 0;

이 관행은 순수 가상 함수가 왜 초기화되는지에 대한 의문을 제기합니다. with 0.

잘못된 가정

처음에는 해당 vtable 항목을 NULL로 설정하기 위해 순수 가상 함수에 값 0이 할당되었다고 믿었을 것입니다. 그러나 이 가정은 올바르지 않습니다. 순수 가상 함수에 할당된 값이 반드시 vtable 항목을 NULL로 설정하는 것은 아닙니다.

'0'의 실제 이유

=0 구문 사용 순수 가상 함수의 역사는 Bjarne Stroustrup의 C 초기 작업으로 거슬러 올라갑니다. 그는 "pure"라는 새로운 키워드를 도입하기보다는 당시 C 커뮤니티에서 받아들여질 가능성이 더 높다고 믿었기 때문에 =0 구문을 선택했습니다.

Stroustrup 자신이 자신의 책에서 말했듯이, "C의 설계 및 진화" =0 구문은 vtable 항목을 NULL로 설정하기 위한 것이 아닙니다. 더욱이 vtable 항목을 NULL로 설정하는 것은 순수 가상 함수에 대한 이상적인 구현 전략이 아닙니다.

결론

순수 가상 함수를 0으로 초기화하는 것은 관련이 없습니다. vtable 항목을 NULL로 설정합니다. 대신 C 개발 초기 단계에서 순전히 가독성과 호환성을 위해 =0 구문이 선택되었습니다.

위 내용은 순수 가상 함수가 '0'으로 초기화되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.