관리 메뉴

ComputerVision Jack

[C++프로그래밍 Chapter9] 본문

Programming Language/C++ Programming

[C++프로그래밍 Chapter9]

JackYoon 2020. 1. 30. 11:09
반응형

[가상 함수의 동작원리]

virtual로 선언된 가상함수가 있다면, 한 개 이상의 가상 함수를 포함하는 클래스에 대해서는

컴파일러가 가상 함수 테이블을 만든다.  V-Table

 

가상 함수 테이블은 key와 value가 있다.

key : 호출 하는 함수를 구분하는 구분자 역할

value : 구분자에 해당하는 함수의 주소 정보를 알려준다. 

따라서 C++의 언어는 가상함수 테이블을 참조하기 때문에 실행 시간이 저하된다.

[다중 상속(Multiple Inheritance)] 

다중 상속(Multiple Inheritance)

둘 이상의 클래스를 동시에 상속하는 것.

class Three : public One, protected Two{

    클래스 내용

};

 

다중상속의 모호성(Ambiguous)

상속 받는 두 클래스에 대해 동일한 이름의 멤버 변수가 존재하는 경우

어떤 클래스 멤버에 접근해야 하는지 어려움이 존재한다.

One::function1();

Two::function1();

앞에서 어떤 클래스에서 왔는지 명시한다.

 

가상 상속(Virtual Inheritance)

하나의 클래스를 상속 받는 두개의 클래스를 상속받는 클래스가 있는 경우,

최상단 클래스를 두번 상속받는 문제점이 존재

 

따라서 어떤 클래스를 간접 상속한 것인지 명시한다.

MiddleOne :: function();

MiddleTwo :: function();

 

최상단 클래스가 한번만 상속하게 하는 것이 효과적이다.

상속 앞에 virtual public Base를 붙여 가상 상속으로 만들어서 한번만 상속되게 한다.

 

 

반응형

'Programming Language > C++ Programming' 카테고리의 다른 글

[C++프로그래밍 Chapter11]  (0) 2020.02.01
[C++프로그래밍 Chapter10]  (0) 2020.01.31
[C++프로그래밍 Chapter8]  (0) 2020.01.29
[C++프로그래밍 Chapter7]  (1) 2020.01.28
[C++프로그래밍 Chapter6]  (0) 2020.01.23
Comments