C++노트 -다형성

정적 바인딩

- 컴파일 타임에 호출될 함수를 결정한다.
- 객체, 타입을 보고 호출할 함수를 결정한다.

동적 바인딩

- 런 타임에 호출될 함수를 결정한다.
- Virtual 을 함수 이름앞에 붙여야 한다.(Base 클래스에만 -> 자식 클래스는 자동으로)

ex) 동적으로 할당된 객체가 Base 클래스의 함수를 오버라이딩하여 사용하고 있다면, virtual을 붙이지 않는다면 Base 클래스의 함수만 호출된다.

virtual 함수를 사용하는 클래스들은 모두 각각 virtual 테이블을 가지게 된다.
virtual 테이블은 각 클래스가 어떤 함수를 호출할 지에 대한 정보를 가지고 있다.
(virtual 함수가 너무 많아지면 오버헤드가 생길 수 있다.)

※override 키워드의 역할 : Base 클래스의 함수와 자식 클래스의 override 함수의 형식이 달라질 경우 에러를 발생시킨다.( + Base 클래스에서 final로 선언 시 오버라이딩 불가)

순수 가상 함수 : Base 클래스에서 함수의 body 부분이 없는 함수로, 오로지 오버라이딩을 위해서 틀만 제공해준다. - 함수명 = 0; 과 같이 선언함.

추상 클래스 : 순수 가상 함수를 가지고 있는 클래스로, 객체 생성을 할 수 없다.(순수 가상 함수를 오버라디이 해주어야 함.)



댓글

이 블로그의 인기 게시물

HTML - input file 버튼 꾸미기

HTML - 이미지 미리보기(jQuery 없이)

BOJ - DNA 유사도(2612)