개인적으로 C++이 건축 디자인에 적합한 가장 큰 이유는 미래를 위한 프로그래밍이 가능하기 때문이라고 생각합니다. 예를 들어, public/protected/private을 사용하여 파생 클래스의 액세스를 기본 클래스 멤버로 제한할 수 있으며 추상 클래스에서 파생 클래스를 구현해야 하는 인터페이스를 정의할 수 있습니다.
가상 함수를 선언/정의할 때 파생 클래스는 가상 함수를 재정의할지 여부를 선택할 수 있습니다. 이 점과 관련하여 C++에서는 파생 클래스가 특정 메서드를 다루도록 요구하는 데 필요한 메서드도 제공하는데, 이는 일종의 미래 프로그래밍으로도 간주될 수 있습니다.
순수 가상 함수
이것은 새로운 기술이 아니며 그 기능은 매우 간단합니다. 기본 클래스가 순수 가상 함수를 선언하면 파생 클래스는 이를 인스턴스화할 때 이 함수를 재정의해야 합니다.
이 예에서는 sub::f1() 메서드가 주석 처리되어 있으므로 27행에서 컴파일 오류가 발생합니다.
최종 지정자
일반적으로 필수 재정의 방법이 있으면 재정의를 금지하는 수단도 있어야 합니다. 그런데 왜 이 기능이 C++11에서만 도입되었는지 모르겠습니다. 사용 방법도 매우 간단합니다. 함수 선언 뒤에 최종 지정자를 추가하기만 하면 됩니다.
최종 지정자가 base::f1() 문 다음에 대체된다는 점을 제외하면 코드는 기본적으로 변경되지 않습니다. 이때, sub::f1() 메소드를 정의하면 위와 같은 컴파일 에러가 발생하게 된다.
작가의 관점
본 글은 작가의 개인적인 이해를 바탕으로 순수가상함수와 최종 지정자를 함께 모아서 설명하고 있습니다. 틀린 부분이 있으면 자유롭게 추가 및 수정해주시기 바랍니다.
관련 기사:
c++11 final 및 override 지정자에 대해 자세히 설명
C++11의 새로운 기능에서 auto와 decltype의 차이점과 연결
관련 동영상:
위 내용은 C++11의 새로운 기능 - 순수 가상 함수 및 최종 지정자 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!