C++ 순수 가상함수를 이용한 인터페이스 구상




순수 가상함수 : 함수 구현부가 없는 가상함수를 의미


지금까지 C++를 이용해서 깊이 있는 개발을 한 경험이 없다. 

대학생 때 영상 필터 프로그램을 만든 게 처음이자 마지막 C++ 프로젝트라고 기억한다.

임베디드 분야에 종사하고 있어서 그렇다고 넘어가기에는 그 이해도가 매우 낮은 편이다. 부끄럽다.

하지만 언제까지나 자기가 자신 있어 하는 언어로만 개발할 수는 없는 법.


최근에 주 업무 외, C++로 만들어진 프로그램을 유지 & 보수하는 일까지 맡게 되었다.

개념부터 다잡을 기회로 생각하고 관련 공부를 해보고자 한다. ( 어차피 불평불만을 해봤자 반영되는 일이 없을 것을 알기에.. )


오늘은 추상 클래스(Abstract Class)를 이용한 인터페이스를 강제하는 것에 대한 이야기다.

추상 클래스는 보통 순수 가상함수를 가지고 있는 클래스를 일컫는다.


이를 이용하면 다른 사람들과 협업할 때 예기치 못한 상황이 발생할 위험을 줄이고 개발 및 관리가 쉬워지는 장점이 있다고 한다. 

아직 그 효용성에 대해서는 크게 와 닿지는 않는다. ( 해봤어야 알지.. ) '굳이 인터페이스 클래스가 별도로 있어야 하나..' 싶기도 하다.


암튼, 추상 클래스를 이용해 큰 틀에서의 가이드 라인만 제시하고,

디테일한 동작, 즉 실제 구현은 추상 클래스를 상속한 자식 클래스에서 오버라이딩하는 것이다.

오버로딩이 아니다. 리턴 타입, 매개 변수 개수, 이름 등 임의로 변경해서는 안된다.



한가지 주의할 점은 순수 가상함수를 선언한 클래스는 인스턴스 생성이 불가능하다는 점이다.

이제 위처럼 하나 이상의 순수 가상함수를 포함한 추상 클래스를 상속하는 자식 클래스를 만들어 보자.



인스턴스를 생성해보자.



따라서 개발 초기에 개념적 구조를 이런 식으로 잘 잡아 놓으면 나 뿐만 아니라 다른 사람도 이 구조에 강제되는 효과(?)를 볼 수 있다.


댓글

Designed by JB FACTORY