시작은 미미하나 끝은 쥬쥬하리라.

Study 56

[열혈 C++ 프로그래밍] 윤성우의 열혈 C++ 프로그래밍 내용 정리

열혈 C++ 프로그래밍 내용 정리 1. C언어 기반 C++ 1 2. C언어 기반 C++ 2 3. 클래스의 기본 4. 클래스의 완성 5. 복사생성자 6. friend, static, const 7. 상속의 이해 8. 상속과 다형성 9. 가상의 원리와 다중상속 10. 연산자 오버로딩 1 11. 연산자 오버로딩 2 12. string 클래스 디자인 13. 템플릿 1 14. 템플릿 2 15. 예외처리 16. C++ 형 변환자 윤성우의 열혈 C++ 프로그래밍 - 예스24 2004년도에 출간된 윤성우 저자 「열혈강의 C++ 프로그래밍」의 개정판이다. C언어를 이해하고 있는 독자들을 대상으로 한 C++ 기본서로서, 초보자에게 적절한 설명과 예제를 통해서 C++ 학습에 재 www.yes24.com 교재 : 운성우의 열..

[열혈 C++ 프로그래밍] (16) C++ 형 변환자

C언어 기반 C++ 2 형 변환 연산1 형 변환 연산2 형 변환 연산3 형 변환 연산1 C++ 형 변환 다운 캐스팅 등 문법적으로 에러가 있더라도 컴파일 에러를 일으키지 않고 형 변환 연산 처리 C++의 형 변환 : 4가지의 종류로 분할하여 사용 -> 각 종류 별 케이스에 일치하지 않으면 컴파일 에러 발생, 문법적 오류 발견 가능 1. static_cast 2. const_cast 3. dynamic_cast 4. reinterpret_cast dynamic_cast(안전성 보장) static_cast(안전성 미 보장) 형 변환 연산2 dynamic_cast 포인터 또는 참조자를 T형으로 변환하되, 안전한 형 변환만을 허용 ex) B클래스의 기초 클래스 A클래스일 때, B클래스의 포인터를 A클래스의 포인..

[열혈 C++ 프로그래밍] (15) 예외처리

예외처리 예외 상황, 예외 처리 예외처리 메커니즘 Stack Unwinding 예외상황 표현하는 예외 클래스 설계 예외처리 예외 상황, 예외 처리 예외 상황 문법적 오류가 아닌 프로그램 논리에 맞지 않는 오류 ex) 나이 입력 : 0보다 작은 값 입력 -> 예외 상황 예외 처리 조건문을 통해 예외를 발견하고 처리가 가능하지만 이러한 방식은 예외처리부와 일반 코드를 쉽게 구분 불가 -> C++에서 별도 메커니즘 제공 : try, catch, throw 예외처리 메커니즘 try, catch, throw try 블록에서 발생한 예외는 catch 블록에서 처리 try : 예외 발생의 검사 범위를 지정, 예외가 발생할 가능성이 있는 코드 블록 catch : try블록에서 발생한 예외를 처리, 예외 핸들러가 처리할..

[열혈 C++ 프로그래밍](14) 템플릿 2

템플릿 2 내용 확장 클래스 템플릿의 특수화 템플릿 인자 템플릿과 static 내용 확장 const 변수, 객체의 상수화 키워드 클래스 템플릿의 특수화 템플릿 컴파일러가 클래스를 만드는데 사용되는 템플릿을 정의 -> 컴파일러가 템플릿을 확인하고 템플릿 기반 클래스를 생성 -> 템플릿 클래스에서 객체를 생성 BoundCheckArray iarr(50); BoundCheckArray oarr(50); -> 와 같이 객체 생성 가능 Point int형 : BoundCheckArray로 객체 생성 -> typedef Point* POINT_PTR; = BoundCheckArray oparr(50);과 동일 + 템플릿 클래스 자료형을 대상으로 일반함수 정의 가능 + 클래스 템플릿 내부에서 일반 함수를 대상으로 f..

[열혈 C++ 프로그래밍] (13) 템플릿 1

템플릿 1 템플릿과 함수 템플릿1 템플릿과 함수 템플릿2 클래스 템플릿 템플릿 일부만 결정되어 있고 나머지는 사용하는 순간에 결정되는 것 -> 함수의 기능은 결정되어 있지만 자료형이 결정되어있지 않고 의존적이지 않은 것 int add(int a, int b) { return a+b } -> double형 데이터를 대상으로 연산하지 못함 -> double형 데이터를 int형으로 캐스팅하여 연산 할 수 있지만 데이터 손실 발생 -> double형 데이터 연산을 하는 함수 작성 필요 -> 자료형 마다 함수를 추가 작성하는 것이 비효율적이라서 템플릿 사용 T add(T a, T b) { return a+b } -> 함수 템플릿 -> T가 어떤 것인지 컴파일러가 알 수 있게 명시 + template {typena..

[열혈 C++ 프로그래밍] (12) String 클래스 디자인

String 클래스 디자인 C++표준, string클래스 문자열 처리 클래스 C++ 표준, string 클래스 String 문자열 처리를 위해 제공되는 클래스, string.h 헤더 파일을 포함해야 사용 가능 string str1 = "a"; string str2 = "b"; string str3 = str1 + str2; -> str1.operator+(str2);를 호출 : operator+() 함수는 string.h 헤더 파일에 정의 -> operator+() 이외에도 문자열과 관련한 operator+=(), ==() () 등의 함수가 정의 문자열 처리 클래스 length() 문자열의 길이를 반환하는 stirng 메소드 size()메소드도 길이를 반환하고 같은 값을 반환하지만, size는 객체가 메..

[Window System Programming] 윈도우 시스템 프로그래밍 내용 정리

윈도우 시스템 프로그래밍 내용 정리 1. 시스템 프로그래밍의 이해와 접근 / 컴퓨터 하드웨어의 구성 / CPU에 대한 이해 2. 아스키 코드 VS 유니코드 3. 64비트 기반 프로그래밍 4. 컴퓨터 구조와 접근 방법 / LOAD & STORE 명령어 / Direct & Indirect Mode 5. 프로세스와 스케쥴러 / 프로세스 생성 6.커널 오브젝트에 대한 이해 / 핸들의 종속 관계 7. 프로세스 간 통신(IPC)의 의미 / 메일 슬롯 방식 IPC / Signaled vs Non-Signaled 8. 프로세스 환경변수 / 핸들 테이블 상속 / 파이프 방식 IPC 9. 스케쥴링 알고리즘과 우선순위 10. 절차적 함수 호출 11. 프로세스 VS 스레드 / 커널 레벨 VS 유저 레벨 스레드 / 커널 모드 ..

[Window System Programming] Chapter 21. DLL

4-21 DLL DLL(Dynamic Linked Library) DLL(Dynamic Linked Library) 라이브러리 정적 라이브러리 / 동적 라이브러리 존재 정적 라이브러리 : 각 실행 파일에 라이브러리를 별도로 저장 동적 라이브러리 : 각 실행 파일이 라이브러리 파일을 공유 정적 동적 라이브러리 차이 정적 라이브러리 : 프로그램에 미리 맵핑 되어 가상 메모리에 올라와 있으며 프로그램이 실행되면 메인 메모리에서 사용 동적 라이브러리 : 프로그램이 실행될 때 링크 필요, 수정하고자하는 일부만의 변경 가능 -> 별도의 DLL 파일 존재 정적 라이브러리(좌)와 동적 라이브러리(우) 파일의 동작 비교 (1) 정적 라이브러리 메인 메모리에 올라온 경우, 컨텍스트 스위칭이 일어나면 동일한 영역이더라도 새..

[Window System Programming] Chapter 20. 가상 메모리 & 힙 컨트롤 / MMF

4-20 가상 메모리 & 힙 컨트롤 / MMF 가상 메모리 컨트롤 힙 컨트롤 MMF(Memory Mapped File) 가상 메모리 컨트롤 가상 메모리 컨트롤 CPU와 프로그래머 고나점의 메모리는 가상 메모리, 실제로 물리적 메모리에 맵핑되는 구조 가상 메모리 페이지 Windows OS는 가상 메모리의 페이지를 관리할 때, 페이지에 특성을 부여 -> COMMIT 상태 : 물리적 메모리가 할당된 상태 -> FREE 상태 : 물리적 메모리가 할당되지 않은 상태, 메모리 맵핑이 되지 않은 상태 -> Malloc() 함수를 통해 COMMIT, FREE 상태로의 전환을 수행 REVERSE 상태 사용해야되는 메모리를 COMMIT 상태로 놓게되면 다른 곳에서 사용 불가 -> 연속적인 페이지 할당을 원하기 때문에 필요..

[Window System Programming] Chapter 19. 비동기 I/O와 APC

4-19 비동기 I/O와 APC I/O와 클럭 비동기 I/O 중첩 I/O 완료 루틴 기반 I/O 알람 가능한 상태(Alertable State) & APC(Asynchronous Procedure Call) I/O와 클럭 ex) 1초에 100번의 연산(100클럭)을 하는 A시스템과 1초에 200번의 연산(200클럭)을 하는 B시스템이 있는 경우 -> 100클럭의 연산데이터를 버퍼를 통해 전송하고 버퍼는 10 클럭마다 비워진다고(전송된다고) 가정 -> A 시스템은 연산에 1초가 소요되며 데이터를 10개로 분할하여 전송 -> B 시스템은 연산에 0.5초가 소요되며 데이터를 20개로 분할하여 전송 -> 일반적으로는 B 시스템(클럭이 높은)이 더 빨라 보이나, 이는 핸드 쉐이크 등 과정이 2배로 사용되는 것을 ..