본문 바로가기
320x100

Study/C++8

[C++]멀티스레드(Multi Thread) 스레드에 대해 알아보기 전에 먼저 더 큰 단위인 프로세스(Process)는 일반적으로 실행중인 프로그램을 가리킨다. 저장장치에 저장되어있는 프로그램이 메모리 공간으로 이동하여 OS의 제어를 받는 상태이다. 프로그램과 차이점이 있다면, 프로세스는 메모리에 자신만의 공간을 갖는 능동적인 개체라는 것이다. 스레드(Thread)는 프로세스에서 실행 제어만 분리한 단위 이다. 프로세서를 사용하는 기본 단위이며, 명령어를 독립적으로 실행할 수 있는 하나의 제어 흐름이다. 프로세스는 스레드를 최소 하나 이상 가진다. 멀티 스레드(Multi Thread) 란, 단일 프로세스에서 여러 개의 스레드를 이용하여 작업하는 것이다. 이에 대해 조금 더 자세히 알고 싶다면 내 블로그의 이 글을 참고하면 좋다. 기본적인 스레드의 .. 2020. 12. 18.
[C++]템플릿(Template) 템플릿(Template) 이란? 템플릿은 형판, 견보기, 견본 이라는 뜻이 있다. C++ 에서 템플릿은 어떤 형틀을 만들어 놓아서 원하는 타입을 이용하여 사용하는 문법이다. 사용할 만한 모든 타입마다 작성하지 않아도 되기 때문에 생산성이 높아지고, 코드가 줄어든다. 함수 템플릿 함수 템플릿은 함수를 정의할 때에, 특정 자료형을 정하지 않고 정의한다. 이렇게 함수의 선언부 앞에 template 를 작성해 준다. T 가 아니어도 상관 없지만 T를 자주 쓴다. 이 함수를 호출할 때를 보면, 함수명(인자) 의 형태로 호출한다. 은 써주지 않아도 되지만, 써주는 것이 좋다. 그런데 템플릿을 이용하여 코드를 작성하다 보면 특정 자료형에 대해서만 함수의 내용을 바꾸고 싶을 수 있다. 그럴 때에는 함수를 오버로드해주면.. 2020. 12. 17.
[C++]예외처리(Exception Handling) 코드를 작성하다 보면 다양한 예외(Exception) 상황들을 만날 수 있다. 이런 코드를 작성한다고 하면, 실행 시 0을 입력하게 될 경우 division by zero라는 예외가 뜨면서 프로그램이 종료된다. 그렇다면 C++에서 예외처리는 어떻게 하는 것일까? 예외처리는 기본적으로 try-catch 문을 이용한다. try-catch문 try { (예외가 발생할 수 있는 코드) if (예외가 발생할 조건) throw 변수; } catch (변수타입 변수이름) { (예외를 처리하는 코드) } try-catch 문의 구조이다. 예외가 발생할 수 있는 코드를 try 안에 넣고, if를 사용하여 예외를 걸러내여 catch 에서 처리하면 된다. throw로 변수를 던지게 되는데, 이때 일치하는 변수타입의 catc.. 2020. 12. 16.
[C++]복사 생성자(Copy Constructor) 얕은 복사와 깊은 복사 C++ 의 복사에는 두가지 개념이 존재한다. 하나는 얕은 복사(swallow copy) 그리고 하나는 깊은 복사(deep copy) 이 둘은 복사할 때 메모리의 할당에서 차이점이 존재한다. 먼저 얕은 복사의 경우는 동적 할당을 받은 변수의 주소값을 공유한다. 즉 포인터 변수를 얕은 복사할 경우 새로운 포인터 변수는 기존 주소값을 가리키게 된다. 깊은 복사는 새로운 동적 할당을 만들고, 원본에 있는 데이터까지 복제한다. 일단 얕은 복사의 문제점 #include using namespace std; class MyArray { public: int size; int* data; MyArray(int size) { this->size = size; data = new int[size];.. 2020. 12. 15.