프로젝트공부아이디어
    • 2월
    • 1월
  • 30

    26. 1. 30.

  • 29

    26. 1. 29.

  • Day9

    26. 1. 27.

  • Day8

    26. 1. 26.

  • Day5

    26. 1. 23.

  • Day1

    26. 1. 22.

  • Day2

    26. 1. 22.

  • Day3

    26. 1. 22.

  • Day4

    26. 1. 22.

로딩 중...

Day5

2026. 1. 23.

const의 위치

멤버함수 뒤에 붙이면

C++
void ShowName() const // read-only

호출되는 개체를 수정하지 않는 '읽기 전용 함수'임을 나타냄

멤버 함수 앞에 붙이면

C++
const void ShowName() // 반환값이 상수라는 뜻

참조값을 반환할 때 자주 붙인다

매개변수에 const

참조값인 매개변수를 받을 때 수정하지 못하도록 막아준다

포인터 const

C++
int *const A = 1; // 포인터 주소는 바꿀 수 없지만 주소 내부 값은 수정 가능하다

https://ebs12373.tistory.com/289

template

타입 확정은 컴파일 타임에 - 컴파일 시간이 늘어남(성능)

전방 선언(Forward Declaration)

클래스 전방 선언

  • 한 클래스에서 다른 클래스를 포인터(레퍼런스) 변수로 사용할 때 해당 타입이 클래스(또는 구조체)임을 컴파일러에게 알려주는 기능
  • = 결국 포인터 변수이기 때문에 컴파일 타임에 주소만 저장하므로 class인지 struct인지만 알려주면 포인터 변수에 메모리 할당하는데는 문제가 없다(include 안해도 됨)
  • 포인터 변수가 아닌 다른 자료형 변수는 실제 메모리 할당 크기를 알아야하기 때문에, 해당 변수가 다른 파일에 있다면 반드시 include를 해야한다
  • .cpp 파일에선 include가 불가피하지만, .h 파일에선 include를 피할 수 있다.
  • 요약: header 파일에서 포인터 변수 타입을 컴파일 단계 용으로 구라치는 것

C++ 반환값 최적화(Return Value Optimization)

union

C++
typedef union _LARGE_INTEGER {	struct {		DWORD LowPart; // 64bit가 없을 시절 32bit 2개 연결해서 썼음		LONG HighPart;	} DUMMYSTRUCTNAME;	struct {		DWORD LowPart;		LONG HighPart;	} u;	LONGLONG QuadPart;}

할당받은 메모리 공간을 공유

왼쪽 화살표2226오른쪽 화살표