C++(4)
-
클로저
JavaScript의 클로저란?클로저는 함수가 명시적으로 외부 스코프의 변수를 사용하면서,해당 변수에 접근 가능하지 않은 다른 스코프에서 실행할 때 관찰되는 함수의 특성이다.function getCountAdder(){ let count = 0; return function countAdder(){ count++; console.log(count); }}let addCount = getCountAdder();addCount(); // 1addCount(); // 2addCount(); // 3 위 코드에서 보면, getCountAdder 함수는 countAdder라는 내부 함수 인스턴스를 반환한다.이 때 반환된 내부함수인 countAdder는 외부 스코프(getCountAd..
2025.01.26 -
[C++] 형 변환 연산
C++로 개발할 때는, 형 변환시에 C스타일의 괄호 대신 형 변환 연산자를 사용하는 것이 바람직하다. 형 변환 연산자 컴파일 타임 런 타임 dynamic_cast 부모, 자식 관계 허용, 클래스 타입만 실제로 캐스팅 가능한지 검증 static_cast 부모, 자식 관계 허용, 원시 타입 / 클래스 타입 모두 가능 x reinterpret_cast (=C 스타일) 모두 허용 x const_cast const를 붙이거나 뗀다. x 가장 많이 사용하는 static_cast와 dynamic_cast의 차이점은 런타임에 캐스팅이 가능한지 검증을 하느냐, 마느냐다. (원시 타입 지원 여부도 다르다.) dynamic_cast의 경우 컴파일 타임에는, static_cast와 동일하게 상속관계가 있다면 오류가 나지 않는..
2022.01.07 -
C++ 정리
파라미터 디폴트값 : 함수의 파라미터에 디폴트값을 지정할 수 있다. 함수 호출 시점에 인자가 없다면 컴파일러가 넣어주는 원리. 선언 부분에서만 디폴트값을 지정할 수 있다. (선언과 정의를 나누지 않는다면 상관없음.) 디폴트값은 뒤의 인자부터 채워야한다. static: static으로 선언한 정적변수는 블럭 안에서만 유효한 값을 가지지만 자동변수(지역변수)처럼 없어지지 않고, 블럭으로 다시 돌아왔을 때 이전 값을 사용할 수 있다. 프로그램과 생명주기를 같이 한다. 전역 static: 해당 소스 파일 내에서만 사용할 수 있고, 다른 파일에서 참조가 불가능해진다. 지역 static: 해당 지역 내에서만 사용할 수 있으며, 블럭을 나가는 것과 관계없이 값이 유지된다. extern: 전역으로 선언하며, 다른 파일..
2022.01.06 -
C/C++ 시간을 측정하기
기준 시점 단위 해상도 clock 프로세스 실행 ms 1ms C (time.h) GetTickCount 시스템 시작 이후 ms 15.6ms WinAPI GetTickCount64 시스템 시작 이후 ms 15.6ms WinAPI timeGetTime 시스템 시작 이후 ms 타이머 인터럽트 정확도 WinAPI QueryPerformanceCounter 타임스탬프 카운트 관련 100ns 1㎲ 이하 WinAPI chrono ? ns까지 가능 1㎲ 이하 C++ 11 (chrono) GetTickCount GetTickCount64 는 반환값이 32비트냐, 64비트냐의 차이이다. 32비트를 ms 단위로 return하는 GetTickCount의 경우 시스템 시작 이후 49일 정도 지나면 값이 오버플로우되면서 초기화된..
2022.01.06