비가상 함수

상속받은 기본 매개변수 값은 절대로 재정의해서는 안된다. 기본 매개변수 값은 정적으로 바인딩되는 반면, 가상 함수는 동적으로 바인딩되기 때문이다. 상속받은 기본 매개변수 값 재정의 금지 C++에서 상속받을 수 있는 함수의 종류는 가상 함수와 비가상 함수로 두 가지이다. 가상 함수는 동적으로 바인딩되고 비가상 함수는 정적으로 바인딩된다. (정적 바인딩은 선행 바인딩, 동적 바인딩은 지연 바인딩이라고도 불린다.) 또한, 기본 매개변수 값도 정적으로 바인딩된다. class Shpae { public: enum ShapeColor { Red, Green, Blue }; virtual void draw(ShpaeColor color = Red) const = 0; ... }; class Rectangle: pub..
상속받은 비가상 함수를 재정의하는 일은 절대로 하지 마라. 상속받은 비가상 함수 재정의 금지 상속받은 비가상 함수를 재정의하는 일은 절대로 해서는 안된다. class B { public: void mf(); ... }; class D: public B { ... }; D 클래스가 B 클래스로부터 public 상속되어 파생되었고, B 클래스에는 mf라는 이름의 public 멤버 함수가 정의되어 있다고 가정해 보자. D x; // D타입 객체 B *pB = &x; pB->mf(); // B::mf 문제없이 동작할 것이다. 하지만, mf함수를 상속한다면 문제가 발생한다. class D: public B { public: void mf(); ... }; D x; B *pB = &x; pB->mf(); // B:..
hvv_an
'비가상 함수' 태그의 글 목록