본문 바로가기
TIL

[TIL] 20221028 성장일지

by 마두식 2022. 10. 28.
반응형
C/C++
  • 함수 오버로딩 과정

1. 자신과 타입이 정확히 일치하는 함수를 찾는다.

2. 정확히 일치하는 타입이 없는 경우 아래와 같은 형변환을 통해서 일치하는 함수를 찾아본다.

Char, unsigned char, short 는 int 로 변환된다.
Unsigned short 는 int 의 크기에 따라 int 혹은 unsigned int 로 변환된다.
Float 은 double 로 변환된다.
Enum 은 int 로 변환된다.


3. 위와 같이 변환해도 일치하는 것이 없다면 아래의 좀더 포괄적인 형변환을 통해 일치하는 함수를 찾는다.

임의의 숫자(numeric) 타입은 다른 숫자 타입으로 변환된다. (예를 들어 float -> int)
Enum 도 임의의 숫자 타입으로 변환된다 (예를 들어 Enum -> double)
0 은 포인터 타입이나 숫자 타입으로 변환된 0 은 포인터 타입이나 숫자 타입으로 변환된다
포인터는 void 포인터로 변환된다.


4. 유저 정의된 타입 변환으로 일치하는 것을 찾는다 (이 부분에 대해선 나중에 설명!) (출처)

만약에 컴파일러가 위 과정을 통하더라도 일치하는 함수를 찾을 수 없거나 같은 단계에서 두 개 이상이 일치하는 경우에 모호하다 (ambiguous) 라고 판단해서 오류를 발생하게 됩니다.

 

  • 클래스 멤버 함수 정의

-  보통 매우 간단한 함수를 제외하면 대부분의 함수들은 클래스 바깥에 정의한다.

=>  클래스 내부에 정의할 경우 클래스 크기가 너무 길어져서 가독성이 떨어지기 때문이다.


-  클래스 생성자도 외부 정의가 가능하다.(=> 소멸자도 가능)

 

  • 디폴트 생성자

-  절대로 인자가 없는 생성자를 호출하기 위해서 A a() 처럼 하면 안 됨.

=>  해당 문장은 A 를 리턴하는 함수 a 를 정의한 문장임. 반드시 그냥 A a 와 같이 써야한다.
=>  디폴트 생성자를 사용하는 경우(직접 만들거나, 별도의 생성자를 생성하지 않은 경우) ClassName InstanceName(); 과 같이 암시적 방법으로 생성자를 호출하게 되면 리턴값이 ClassName이고 인자가 없는 함수 InstanceName 을 정의하게 된 것으로 인식한다.
=>  이는 암시적 표현으로 객체를 선언할 때 반드시 주의해 두어야 할 사항이다.

 

  • 함수와 함께 사용되는 const

-  함수 뒤에 const 키워드를 붙일 수 있는 것은 클래스 멤버 함수 뿐이다.

=>  의미는 해당 함수 내에서는 어떠한 클래스 멤버 변수도 변경할 수 없음을 뜻한다.
=>  또한, 뒤에 const 키워드를 붙인 함수는 똑같은 const 함수만 호출이 가능하다.


-  함수 반환 값에 const가 붙은 경우 반환값을 const로 반환한다는 뜻이다. 반환된 값을 변경하지 못하도록 하기 위해서 사용된다.

 

참고 링크

-  씹어먹는 C++ - <4 - 1. 이 세상은 객체로 이루어져 있다> (modoocode.com)

씹어먹는 C++ - <4 - 2. 클래스의 세계로 오신 것을 환영합니다. (함수의 오버로딩, 생성자)> (modoocode.com)

 

 

 

WinAPI
  • PeekMessage 함수

-  GetMessage() 함수처럼 메세지 큐에서 메세지를 가져오는 함수이다
-  GetMessage의 경우 메세지 큐에 메세지가 존재하지 않으면 메세지가 생성될 때까지 무한정 기다린다
-  그러나 PeekMessage의 경우 메세지 큐에 메세지가 존재하지 않으면 0을 리턴한다.

=> PeekMessage 함수는 무한 대기에 빠지지 않고 메세지 큐가 비어있는 동안 다른 작업을 할 수 있다.

 

-  PeekMessage 함수도 GetMessage와 동일하게 메세지가 번역되어 메세지 처리 함수로 보내진다.

 

 

 

DirectX 11
  • Direct3D의 초기화 과정별 상세 내용 학습
  • 타이밍과 애니메이션 - 성능타이머 및 GameTimer

-  포스팅 링크 : [DirectX11] DirectX3D 초기화(2) (tistory.com)

반응형

'TIL' 카테고리의 다른 글

[TIL] 20221102 성장일지  (0) 2022.11.02
[TIL] 20221101 성장일지  (0) 2022.11.01
[TIL] 20221026 성장일지  (0) 2022.10.26
[TIL] 20221025 성장일지  (0) 2022.10.25
[TIL] 20221024 성장일지  (0) 2022.10.24

댓글