2016년 5월 21일 토요일

가상함수 Table

가상함수 Table 에 대해 설명
  실제로 해당인스턴스 타입에 따라 실행되느는 함수의 함수포인터들이 나열된 Table

Virtual 멤버 함수

Virtual 맴버 함수
   Virtual 함수가 아닌 일반함수는 실행시킬때 참조자 혹은 포인터 형에따라 실행되는 함수가 결정
   이되지만 Virtural 함수는 참조자 혹은 포인터 형이 아닌 실제 가리키고있는 인스턴스의 타입에 따라
   실행되는 함수가 결정된다.
   이는 가상함수 Table 땜에.

스택과 큐

스택 큐 물어봄
   재귀함수 관련이 스택
   팩토리얼 재귀
   재쉬함수 주고 이거 재귀안돌게 바꿔보시오( 스택사용 )

트리


   트리의 목적 :  검색에 최적화된 컨테이너
   2진트리, 4진트리 ......
  
   2진트리는 Stl Map 이나 Set 키값을 찾을때 사용되는 알고리즘으로
   알고있다.
단여기에 검색효율을 높이기 위해 레드블렉트리를 적용한것으로 알고있다.
   레드블렉트리
   한쪽으로 데이터가 쏠리게 되면 검색효율이 떨어지는데.
   이때 각노드의 일정 규칙에따라 검은색과 빨간색으로 구별하여
   데이터가 트리한쪽으로 쏠리지 않게 해주어 검색효율을 높여주는 알고리즘

가비지

힙에 쌓인 참조가 끊긴 메모리 인스턴스 ( 가비지 컬렉터에의해 자동소멸된다 )

ref와 out의 차이

MSDN:
ref  :

- 인수가 값의 복사가 아닌 참조로 전달
- ref 키워드를 사용하려면 메서드 정의와 메서드 호출 모두 명시적으로 ref를 사용해야 한다.
- ref 매개 변수에 전달 되는 인수는 전달 되기 전에 초기화 해야 합니다.
- 이러한 방식은 명시적으로 초기화할 필요가 없는 out과 다른 부분이다.
- ref와 out은 오버로딩 되지 않는다.
- 이렇게 생성하면 컴파일 되지 않는다.

- ref와 out은 다음과 같은 메서드에서는 사용할 수 없습니다.
     
          1. 비동기(async) 한정자를 사용하여 정의된 비동기 메서드
          2. yield return 또는 yield break문을 포함하는 반복기 메서드


out :
- ref와 비슷하다.
- 참조를 통해 인수를 전달할 수 있다.
- out 매개 변수를 사용하려면 메서드 정의와 호출 메서드가 모두 명시적으로 out 키워드를 사용해야 한다.


- ref 파트에서 설명한 것과 같이 둘은 오버로드 되지 않는다.

-둘의 차이점 :
 
     ref : 메서드 내부에서 변수를 수정하려고 할 때 사용
    out : 메서드 내부에서 생성된 값을 반환하려 할 때 사용