본문 바로가기

final

sealed 키워드를 사용한 클래스 상속 방지 C++에서는 일반적으로 상속을 막는 방법이 없었습니다.MFC에서는 CString을 상속해서 확장하는 것을 권하지 않고 있습니다.(CString은 CStringT 템플릿을 사용하게 되어 있는데 소멸자가 virtual이 아닙니다.)하지만 이것을 강제할 방법은 없었습니다.다만 C++11 이후에 상속을 막을 수 있는 키워드가 추가 되었습니다.다음 링크에서 확인이 가능합니다.2014/12/21 - [Programming/C++11&14] - [C++11] final과 override물론 생성자등을 private로 선언하거나 하면, 원하는 기능을 구현할 수는 있습니다.하지만 C#에서는 좀 더 쉽게 상속을 막을 수 있는 장치가 마련되어 있습니다.이렇게 무분별한 상속을 막기 위해서 C#에서는 sealed라는 키워드가 .. 더보기
[C++11] final과 override C++에서는 명시적으로 클래스의 상속을 막는 방법이 없었습니다.C++ CLI 등에서 selaed라는 키워드가 존재했지만 이것은 표준이 아닌 MS 확장 키워드입니다.C# 역시 sealed라는 키워드를 사용합니다.C#의 sealed 키워드에 대한 내용은 다음 링크에서 확인 가능합니다.2014/12/27 - [Programming/C#] - sealed 키워드를 사용한 클래스 상속 방지C++ CLI나 C#이나 모두 닷넷을 지원하기 위해서 만들어진 것을 생각하면 공통된 특정 키워드가 있는 것이 이해가 갑니다.C++11에서는 상속을 정교하게 다루기 위해 final과 override라는 새로운 키워드가 추가되었습니다.final은 상속을 차단하기 위해 추가된 키워드이고, override는 클래스의 메소드를 명시적으로.. 더보기