분류 전체보기(33)
-
[C++] 템플릿
클래스나 함수에 템플릿을 이용하여 여러 자료형에 대해서 동일한 작동을 하게 만들 수 있다. 보통 자료구조에서 잘 사용된다. 컴파일 과정에서 Call이 일어난 해당 템플릿 타입에 대한 함수가 실제로 생성된다. 따라서 헤더파일과 cpp파일로 선언 / 정의를 나눌 수 없다. 또한 템플릿 코드 블럭 내에서는 실제 함수가 아니기 때문에 인텔리센스가 작동하지 않는다. 템플릿 선언시, template 이런식으로 매개변수처럼 활용할 수도 있다.
2022.01.07 -
[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 -
비트맵(.bmp) 파일 구조
비트맵의 파일구조는 아래와 같다. BitmapFileHeader BitmapInfoHeader 이미지 데이터 BitmapFileHeader와 BitmapInfoHeader의 구조 typedef struct tagBITMAPFILEHEADER { WORD bfType; //파일의 타입. 문자 BM이 저장된다. DWORD bfSize; //파일의 사이즈 WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; //bitmap bits(실제 이미지 데이터)가 시작되는 지점 } BITMAPFILEHEADER, *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER; typedef struct tagBITMAPINFOHEADER { DWORD biSize; L..
2022.01.06 -
[C/C++] 파일 패킹
파일들을 하나의 파일로 묶고 푸는 예제. 패킹 파일은, 패킹 파일에 대한 헤더, 패킹된 파일들에 대한 헤더, 실제 패킹된 파일들의 데이터 이렇게 세 구간으로 구분된다. 패킹 파일에 대한 헤더는, 이 파일을 상징하는 iType과 묶인 파일들의 수를 저장한다. 패킹된 파일들에 대한 헤더는 각 패킹된 파일들의 파일 사이즈, 파일의 이름, 실제 데이터 시작 위치(offset)를 저장한다. 이 때, offset을 저장하는 이유는 만약에 패킹 파일 내에서 변경(삭제 / 추가)이 일어났을 때, 중간에 데이터가 비는 부분이 발생할 수 있다. 예를 들어서, 중간 부분에 패킹된 100바이트 용량을 가진 파일이 삭제되고, 이 부분에 90바이트의 용량을 가진 파일이 추가된다면 사이즈로만 뒤의 파일들을 찾을 수 없다. #inc..
2022.01.06 -
[C/C++] 파일 입출력
C언어에서는 fopen / fopen_s 함수로 파일을 열고, fclose 함수로 파일을 닫음. 파일을 열 때 파일접근(읽기/쓰기/추가), 입출력모드(텍스트 모드 / 바이너리 모드)를 선택해야한다. 모드 설명 r 읽기 전용으로 파일을 오픈. 파일이 없다면 호출 실패. NULL 반환. w 쓰기 전용으로 파일을 오픈 파일이 있다면 기존 파일을 지우고 새로 만듬. 파일이 없다면 새로 만듬. a 추가 쓰기 전용으로 파일을 오픈. 파일이 있다면 파일의 끝에서부터 내용을 추가한다. 파일이 없다면 새로 만듬. r+ 읽고 쓰기 위해 파일을 오픈. 파일이 있다면 기존의 내용을 덮어씀. 파일이 없다면 파일을 새로 만듬. w+ 읽고 쓰기 위해 파일을 오픈. 파일이 있는 경우 기존 파일을 지우고 새로 만듬. 파일이 없다면 파..
2022.01.06