이번 항목은 가상함수를 사용시, 주의해야 할 점을 설명하고 있다. 다음 코드를 보자. #include #include using namespace std; /*Base 클래스의 정의 구역*/ class Base { public: virtual void f( int ); virtual void f( double ); virtual void g( int i = 10 ); }; void Base::f( int ) { cout
디폴트 매개변수 검색 결과
이렇게 모모 하지 말자, 모모 하자. 이런식으로 나온 제목을 보고 있노라면, 마음이 편해진다. 생각할 필요 없이 그대로 믿고 따르면 되기 때문이다.(.. 물론 알아야 할 필요가 없다는것은 아니지만. ㅋ) 왜냐하면 함수의 디폴트 매개변수는 정적 바인딩되고, 상속되는 함수는 동적으로 바인딩 되기 때문이다. .. 이렇게만 정리하면 편하겠지만, 정적 바인딩, 동적 바인딩에 대해서 알아야 더 편한 세상에 살수 있어, 정리해 둔다. 정적 바인딩이란, 확실한 것들을 미리 묶는다라는 개념으로. 미리 묶었기 때문에 예측하여 캐싱할수가 있어, 더 빠르다. 공식적으론 선행 바인딩(Early Binding)이라 부른다.(이 말이 개인적으로 더 좋다고 보는데..) 동적 바인딩이란, 유동적이기에 미리 묶을수 없지만, 동적으로 다..
우선 함수 오버로딩이란? 1. 똑같은 함수이름이 두개 있다. 2. 1번의 상황에서 두 함수의 매개변수가 다르다. 3. 각각 작동이 된다. 이때 이 함수를 함수 오버로딩되었다. 라고 말한다. 디폴트 인자 값이란? 1. 매개변수에 operator = 과 목적데이터를 넣는다. 예) int f(int a = 1); 이때 1은 디폴트 인자값이다. 항목 24. 함수 오버로딩과 디폴트 인자값 중에서 주의깊게 선택한다. 이유 1. C++ 특유의 함수 오버로딩과 디폴트매개변수 사이에 모호성이 발생될 수 잇다. - 이 모호성 때문에 컴파일 타임에 에러가 발생한다. (컴파일러 찾아주는 오류는 너무 반갑고 기분좋다.) 2. 가독성이 떨어 진다.... 해결방법 1. 자신에게 자문해 본다. - 디폴트로 이용할 값이 있는가? - ..
최근댓글