728x90
가상(Virtual)
- 객체가 생성되면 멤버변수는 객체 내에 존재하지만, 멤버함수는 메모리의 한 공간에 별도로 위치하고선, 이 함수가 정의된 클래스의 모든 객체가 이를 공유하는 형태를 취한다.
- 오버라이딩 된 가상함수의 주소정보는 유도 클래스의 가상함수 테이블에 포함되지 않는다.
- 가상함수 테이블에 의한속도의 저하
- 클래스에 가상함수 포함되면, 가상함수 테이블이 생성되고, 또 이 테이블을 참조하여 호출될 함수가 결정되기 때문에 실행속도가 감소한다.
- 하지만 그 속도의 차이가 극히 미미하다
다중상속(Multiple Inheritance)
- 둘 이상의 클래스를 동시에 상속하는 것
- 논란이 많은 문법
- 득보다는 실이 더 많다 기본문법에서 제외되어야한다.
- 일반적인 경우 다양한 문제를 동반하지만 제한적인 사용까지 부정할 필요는 없다고 본다.
- 다중상속의 모호성(Ambiguous)
- 다중상속의 대상이 되는 두 기초 클래스에 동일한 이름의 멤버가 존재하는 경우에는 문제가 발생할 수 있다. 이러한 경우 유도 클래스 내에서 멤버의 이름만으로 접근이 불가능하기 때문이다.
728x90
'언어 > C++' 카테고리의 다른 글
1. Introduction to the C++ (1) | 2023.10.02 |
---|---|
9. 연산자 오버로딩 (0) | 2023.02.02 |
8. 상속과 다형성 (0) | 2023.01.26 |
7. 상속(Inheritance)의 이해 (0) | 2023.01.26 |
6. 클래스의 완성 (0) | 2023.01.19 |