[C++] 동적바인딩( Dynamic binding )

Programming/C++ Language 2011. 1. 3. 15:53
virtual 함수에 대해서 이야기를 해보겠습니다.

많은 개발자들이 상속을 사용하면서, virtual 함수도 많이 사용을 하게 되는데 virtual 함수를 사용함에 있어 실수 할 수도 있을 부분에 대해서 말해보겠습니다.

bool compare_garades( Core c1, Core c2 )
{
    return c1.grade() < c2.grade();
}

위와 같은 코드가 있고, Core라는 Base class가 있고, grade라는 virtual 함수가 있고, Core를 상속받는 Grad 라는 클래스가 있고, Grad 클래스는 grade함수를 오버라이드하여 재정의를 했다는 것을 전제 조건으로 설명하겠습니다.

실행할 virtual 함수를 런타임에 선택하는 것은 그 함수가 레퍼런스나 포인터를 통해 호출 될 때에만 가능한 것입니다. 하지만 객체 자체에 대한 virtual 함수를 호출하면 컴파일 시에 그 객체의 정확한 타입을 결정할 수 있습니다. 따라서 위와 같은 경우, Core라는 객체의 정확한 타입을 알수 있기 때문에 c1과 c2에 실제로 Grad함수가 전달이 되더라도, 매개변수가 객체에 대한 레퍼런스가 아니라, 객체 그 자체이므로 Grad객체의 Core파트만 잘라내어 그에 대한 복사본이compare_grades 함수의 매개변수로 전달이 되게 됩니다. 즉, 정적 바인딩이 수행되는 것입니다.

출처 : Accelerated C++

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

typeid 키워드  (0) 2014.04.15
Unique Pointer  (0) 2014.03.03
[C++] this 포인터 사용하기  (0) 2010.07.31
[C++] 참조 변수  (1) 2010.07.31
[C++] 참조 반환  (0) 2010.07.31

설정

트랙백

댓글

[EXCEL] OFFSET 함수

Tools/Excel 2010. 10. 17. 19:08
OFFSET 함수는 5개의 인자로 구성이 된다.
첫 번째 인자는 참조영역의 범위
두 번째 인자는 참조 영역의 첫 행과 출력할 영역의 첫 행 사이의 간격
세 번째 인자는 참조 영역의 첫 열과 출력할 영역의 첫 열 사이의 간격
네 번째 인자는 출력하려는 참조 영역의 높이(행 수)
다섯 번재 인자는 출력하려는 참조 영역의 너비(열 수)

따라서, 두/세 번째 인자가 참조 영역을 기준으로, 출력할 영역의 상대적인 좌표가 된다.

그리고 네/다섯 번째 인자는 출력할 영역의 범위를 나타낸다.


<항목설정 SHEET>

 
<1月 SHEET>
MATCH예제와 같이 위의 그림이 있고, =MATCH('1月'!C22,내역대항목,0)-1 함수가 "매치"라는 이름

으로 정의가 되어 있다.

=OFFSET(항목설정!$B$2,1,매치,15,1) 을 하게 되면, 항목설정의 $B2$2 가 참조 영역이 되고, 상대 좌표는 바로 아래 행이며, 열은 매치되는 좌표가 되고, 그 범위는 행으로 15, 열로 1이 된다.

따라서 "내역대항목"에서 일치하는 하나의 항목아래 부터해서 15개의 항목이 나타나는 것이다.

'Tools > Excel' 카테고리의 다른 글

[EXCEL] MATCH 함수  (0) 2010.10.17
[Excel] 이름 정의  (0) 2010.10.12
[excel] 다양한 엑셀 데이터 다루기  (0) 2010.04.05

설정

트랙백

댓글

[EXCEL] MATCH 함수

Tools/Excel 2010. 10. 17. 18:08
MATCH 함수는 3개의 인자로 구성된다.

첫 번째 인자는 찾을 값
두 번째 인자는 찾을 범위
세 번째 인자는 찾는 방식인데        0 : 정확히 일치하는 값을 찾음
1 : 작거나 같은 값 중에 가장 큰 값을 찾음
-1 : 크거나 같은 값 중에 가장 작은 값을 찾음

위와 같이 데이터가 있는데, B2:P2 까지 "내역대항목"으로 이름을 지정해 놓았다. MATCH 함수로 "내역대항목" 범위에서 몇 번째 있는지를 구할 것이다.


D19에 보면 1이라고 나와있는데, 이는 C22의 수입 값을 "내역대항목"에서 찾아서 나온 값이다.
MATCH( C22, 내역대항목, 0 ) 을 하게되면, 내역대항목에서 첫번째 항목이므로 1 이 나오는 것이다.

'Tools > Excel' 카테고리의 다른 글

[EXCEL] OFFSET 함수  (0) 2010.10.17
[Excel] 이름 정의  (0) 2010.10.12
[excel] 다양한 엑셀 데이터 다루기  (0) 2010.04.05

설정

트랙백

댓글