반응형

C , C++, C# 45

[C/C++] Templete

원문은 https://modoocode.com/에 잘 정리되어 있다. 모든 내용의 출처는 이곳이다. 원문내용을 보고 내용을 내 방식에 정리한 것이며, 원문의 출처에 자세하게 있다. 템플릿 템플릿이란 사용자가 원하는 타입을 넣어주면 알아서 코드를 찍어내는것이다. C++에서 템플릿은 아래와 같이 선언하고 사용할 수 있다. 여기서는 List 클래스에 대한 템플릿을 명시하고 있다. 이렇게 정의한 템플릿의 인자에 값을 전달하기 위해서는 List 변수이름 과 같이 안에 알맞은 타입을 사용하면 된다. T에 안에 있는 값을 템플릿 클래스가 받는다. 그리고 클래스 탬플릿에 인자를 전달해서 실제 코드를 생성하는 것을 클래스 템플릿 인스턴스화라고 한다. 아래는 코드의 예이다. 템플릿은 템플릿 특수화를 통해 일부 경우에 대해..

C , C++, C# 2020.08.11

[C#] WinForm을 이용한 클래스

WinForm을 이용하여 계산기를 간단하게 구현해 보았다. 그 프로그램은 메서드와 계산기가 작동하는 원리를 이해하여 연산자와 제어문, 분기문을 통해 구현할 수 있었다. 이번에는 클래스에 대해 공부하면서 그것을 WinForm과 적용시켜 객체를 만들어내고 그 객체의 값들을 UI로 나타내는 간단한 프로그램을 만들어보자. 1개의 부모클래스를 상속받는 2개의 자식 클래스가 있으며 우리는 각 클래스의 생성자를 통해 객체를 생성해내고 UI에서 입력을 통해 객체를 생성하는데 그것이 하나일수도 여러개를 담는 리스트로서도 생성할 수 있다. 프로그램을 실행하면 위와 같다. 상단의 '새입양자' 를 눌러 UI를 변경하고 입력받은 내용을 객체로 생성하여 왼쪽의 view와 같이 만들어 낼수 있다. 그리고 view의 아무 cell을..

C , C++, C# 2020.03.25

[C#] WinForm을 이용한 계산기

C# 을 공부하면서 뭔가를 하면서 하면 좋곘다 해서 동영상 강의를 보며 만든 계산기이다. GUI 작업 때문에 소스 코드는 Github에 올려놓았다. 계산기는 간단하기 때문에 특이한 내용들만 코드에 주석처리가 되어있다. 계산기는 Form 클래스만으로 UI와 코드로만 작성할 수 있다. Android Studio로 앱을 개발해 보았다면 비슷한 구조와 기능을 가지고 있다. 물론 WinForm이 좀 더 쉬울 수 있다. UI를 디자인하여 각 Property를 조절하고 이벤트를 실행시켜 로직에 맞게 코드를 작성하여 계산기를 개발하는 것. 그리고 각 객체 및 클래스들에 접근하여 원하는 속성을 변경하고 값들을 수정하는 작업이다. 그것이 전부이다. https://github.com/gjxo12/c-_Simple_Calcu..

C , C++, C# 2020.03.23

[C/C++] mutex 응용과 condition_value

이전시간에 Mutex에 대해 살펴보았다. 이번에는 이 mutex를 응용한 '생산자-소비자' 패턴을 알아보고 condion_value에 대해 간단하게 알아보자. '생산자-소비자' 패턴은 멀티 스레딩하는데 많이 사용되며 '생산자'는 무언가 일을 처리하는 스레드를 받아오고 '소비자'는 받은 일을 처리하는 스레드를 의미한다. 아래의 전체코드를 한번 보자. 우리는 웹 페이지를 다운받는 시나리오를 가정한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 ..

C , C++, C# 2020.03.01

[C/C++] Mutex

CPU는 컴퓨터의 모든 연산이 발생하는 두뇌와 같은 엳할을 한다. CPU 에서 연산을 수행하기 위해서는, CPU의 레지스터(register) 라는 곳에 데이터를 기록한 다음에 연산을 수행해야 합니다. 64 비트 컴퓨터의 경우, 레지스터의 크기들이 8 바이트에 비해 불과합니다. 뿐만 아니라 레지스터의 개수는 그리 많지않으며 일반적인 연산에서 사용되는 범용 레지스터의 경우 불과 16개이다. 즉, 모든 데이터들은 메모리에 저장되어 있고, 연산 할 때 할 때 마다 메모리에서 레지스터로 값을 가져온 뒤에, 빠르게 연산을 하고, 다시 메모리에 가져다 놓는 식으로 작동한다. 예를들면, 메모리는 냉장고 이고 CPU 의 레지스터는 도마 라고 생각하자. 냉장고 (RAM) 에서 재료를 도마 위에 하나 (레지스터) 꺼내서 썰..

C , C++, C# 2020.02.22

[C/C++] Thread

이번 시간에는 '쓰레드' 라고 하는것에 대해 알아본다. 이 개념은 '운영체제'를 들어봤다면 공부해봤을 내용이다. C/C++은 속도가 빠르기 때문에 하드웨어 내부에서 자주 사용하는 언어이다. 시작하기에 앞서 잠깐 운영체제 내용을 간단하게 살펴보고 가자. CPU 는 한 프로그램을 통째로 쭉 실행시키는 것이 아니라, 이 프로그램 조금, 저 프로그램 조금씩 골라서 차례를 돌며 실행시킨다. 이 CPU가 프로세스를 실행시킨다. CPU는 한 번에 한개의 연산을 수행한다. 하지만 컨텍스트 스위칭(Context Swithing)을 통해 여러가지 일들을 한써번에 할 수 있다. CPU 는 그냥 운영체제가 처리하라고 시키는 명령어들을 실행할 뿐, 어떤 프로그램을 실행시키고, 얼마 동안 실행 시키고, 또 다음에 무슨 프로그램으..

C , C++, C# 2020.01.19

[C/C++] Callable, std::function

Callable이란 호출할 수 있는 모든것을 나타낸다. C++에서도 함수를 호출하는데 여러 방법이 있는데 그것을 알아볼 것이다. 참고로 '()' 을 붙여서 사용한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 #include #include #include class info { public: void operator()(int a, int b) { std::cout Colored by Color Scripter function은 위와 같이 사용할 수 있다. std::function f1 = fun1; std::function f2 = in..

C , C++, C# 2020.01.14

[C/C++] weak_ptr

weak_ptr은 객체가 존재하면서도 삭제가 가능한 포인터이다. 스마트 포인터 처럼 객체를 안전하게 참조할 수 있게 하지만, shared_ptr과는 다르게 참조 개수를 늘리지는 않는다. 따라서 설사 어떤 객체를 weak_ptr 가 가리키고 있다고 하더라도, 다른 shared_ptr 들이 가리키고 있지 않다면 이미 메모리에서 소멸되었을 것입니다. 그래서 weak_ptr을 사용할 때에는 원래 객체로 사용할 수 없고 shared_ptr로 변환해서 사용해야 한다. 이때 가리키고 있는 객체가 이미 소멸되었다면 빈 shared_ptr 로 변환되고, 아닐경우 해당 객체를 가리키는 shared_ptr 로 변환된다. 전체 코드는 아래와 같다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1..

C , C++, C# 2020.01.09

[C/C++] Shared_ptr

unique_ptr은 동적으로 할당된 객체를 관리하는 데 유용한 클래스이다. 하지만 소유권을 단 하나만 가질 수 있는 단점이 있다. 여러 객체가 하나의 동적 할당 객체를 소유한다면 이것을 삭제할 때 그 주체가 누구인지 불분명하다. shared_ptr 포인터 타입은 이런 경우를 위한 것이다. 특정 자원을 몇 개의 객체에서 가리키는지를 추적한 다음 그 수가 0 이 되야만 비로소 해제를 시켜주는 방식의 포인터이다. 내부 참조 카운트를 이용한 방법으로 적재된 객체에 대한 포인터를 유지하고 있는 객체의 수를 확인하고 범위를 벗어나는 마지막 shared 포인터만 적재 객체에 삭제를 호출한다. 전체코드는 아래와 같다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 2..

C , C++, C# 2020.01.06

[C/C++] unique_ptr

unique_ptr은 동적으로 할당된 객체를 유지할 경우 객체가 소멸하면 클래스가 자동으로 delete를 호출하기 때문에 쓸데없는 메모리가 나가는것을 막을 수 있다. unique 포인터는 가리키는 객체에 대한 소유권을 표현하며 해당 객체를 다시 사용하지 않을 경우 이와 관련된 메모리를 비우는 역할을 한다. 전체 코드는 아래와 같다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 7..

C , C++, C# 2019.12.28
반응형