본문 바로가기
반응형

C++30

[C++] WORD, DWORD, QWORD ? 갑자기 생판 처음보는 친구들 다같이 와서 자기소개하길래, 뒷조사좀 했다. ✅WORD의 탄생 일화 데이터 처리 과정에서 unsigned short 와 같이 선언이 매우 귀찮다. 해당 타입을 재정의 하자. CPU의 기본 처리 단위인 16bit(unsigned short)를 WORD라는 타입으로 재정의(typedef) 했다. (Visual Studio 등 IDE 에서 WORD를 선언하고 F12로 확인이 가능하다) ✅DWORD의 탄생 일화 Intel 사의 16비트 프로세서에서는 기본 처리 단위를 WORD로 재정의 했었다.. 다만 프로세서의 단위의 발전으로 8bit, 16bit, 32bit, 64bit 등 으로 발전했다. (128bit 단위도 있다고 함) 따라서 기존의 16bit를 기반으로 한 기본 처리 단위, .. 2023. 8. 3.
C++ : 제네릭 클래스 template을 통한 제네릭 클래스(generic class) 일반적으로 스택을 통해 저장되는 클래스들은 데이터의 타입만 다를 뿐, 알고리즘은 동일하다. template을 통해 스택에 저장되는 데이터 타입을 일반화시킨 제네릭 스택 클래스를 만들자. ✅Generic class : 위 클래스를 만들기 위해서는 클래스 선언부와 구현부를 모두 template으로 선언해야한다. 제네릭 클래스의 멤버 함수는 자동 제네릭 함수이다. ▶제네릭 클래스 선언부 스택은 하나의 데이터 타입만을 다루기 때문에 제네릭 타입은 T하나만 필요하다. template class MyStack { int tos; T data[100]; //T타입의 배열. 스택에 최대 100개의 원소 저장 public: MyStack(); void pu.. 2023. 7. 19.
C++ : 템플릿 & 템플릿 함수 템플릿(template) : '형판'이라는 뜻 / ' 본 떠 찍어내기 위해 만들어진 틀' C++에서 템플릿은 함수나 클래스 코드를 찍어내듯이 생산할 수 있도록 일반화(generic)시키는 도구다. template키워드를 통해, 중복 함수들을 일반화시킨 함수를 만들어 낼 수 있다. 위와 같은 함수를 템플릿 함수(template function) 또는 재네릭 함수(generic function)이라고 부른다. ✅템플릿 선언과 재네릭 타입 template template template이란 키워드로 시작해 나 로 재네릭 타입 T를 선언한다. 재네릭 타입(generic type)이란 C++의 기본 타입이 아니기에 이것을 일반화시킨 새로운 타입으로 일반 타입이라고 부른다. template 중복 함수들을 템플릿화하.. 2023. 7. 18.
[씨앤씨뿔] C++ Template VS Java Generic? C++ 템플릿에 대해 공부하고 있는데, 문득 궁금증이 들어서 살짝 공부 방향을 틀었다. Spring을 통해 프로젝트를 진행할 적에, 메모리를 고려하지 않고 남들이 좋다는 어노테이션이며 안전하다는 방법들을 막갖다붙였다. 여러가지가 겹치니까 속도가 무지막지하게 느려졌다. 그 뒤로 특정 기술이나 방법이 좋다해도 현재의 프로젝트나 기술에 있어서 이를 도입했을 때, 사이드 이펙트를 고려하게 되어 좀더 파악하고 도입하는 습관이 생겼다. 서론과는 무관하지만, JAVA의 generic, C++의 Template 이 비슷해보여서 두 가지의 차이에 대해 궁금해졌다. 사실 기록하려던 내용이 구글링을 하다보니 방향이 틀어져서 서론을 왜썼나 싶게 됐다.. ----------------------------------------.. 2023. 6. 20.
[TIL] C++ 난수 생성 미니게임처럼 난수 생성을 통해 코드를 짜는게 있었는데, 오랜만에 쓰다보니 다 잊어버려서 다시 공부한김에 좀 끄적여봤다. C/C++에서 난수했을 때 제일 많이 접하는 함수가 rand()와 srand()함수이다. rand()함수는 난수의 생성 패턴이 1개, srand()는 여러 개로 설정하는 것이다. ✅ 랜덤 함수를 통한 난수 생성 //C언어 #include //rand(), srand() #include //time() //C++ #include // rand(), srand() #include // time() C언어에서 사용하는 랜덤 함수(rand)를 사용하려면 헤더 파일을, C++에서 사용하는 랜덤 함수인(srand)을 사용하려면 를 헤더에 포함시켜야한다. 또 이 난수 함수를 랜덤하게 사용하려면 초기.. 2023. 5. 15.
[C++] 스마트 포인터 Java의 가바지 컬렉터가 너무 당연하다고 생각해서, C++에서는 유사한 기능이 있을까 싶어 찾아보다가 이 포스팅의 키워드인 스마트 포인터에 대해 찾아보게 됐다. 스마트 포인터(smart pointer) C++ 프로그램에서 new 키워드를 사용하여 동적으로 할당받은 메모리는 반드시 delete 키워드를 사용하여 해제해야 한다 C++에서는 메모리 누수(memory leak)로부터 프로그램의 안정성을 보장하기 위해 스마트 포인터를 제공하고 있다. 스마트 포인터란 포인터처럼 동작하는 클래스 템플릿으로 사용이 끝난 메모리를 자동으로 해제해 준다. 스마트 포인터의 동작 보통 new 키워드를 사용해 기본 포인터(raw pointer)가 실제 메모리를 가리키도록 초기화한 후에 기본 포인터를 스마트 포인터에 대입하여 .. 2023. 5. 3.
[씨앤씨뿔]C++ / 객체 포인터& 배열 & 동적 생성 - 3 C++에서 문자열을 다루는 방법은 기존의 C에서 사용했던 - C-스트링 - string 클래스 2가지가 있다. C-스트링은 C 언어에서 사용하던 전통적인 문자열로서, '\0'로 끝나는 문자 배열을 문자열로 취급하는 방법이다. String은 C++표준 라이브러리에서 제공하는 클래스로, 문자열을 객체로 다룬다. string은 문자열을 저장하는 버퍼와 함께, 문자열을 다루는 다양하고 유용한 함수와 연산자들을 멤버로 가지며, 개발자들이 C-스트링보다 문자열을 쉽게 다룰 수 있다. string 클래스 사용을 위한 코드 #include using namespace std; C-스트링은 초기에 할당받은 메모리 크기 이상의 문자열을 저장할 수 없기에 개발자의 프로그램 작성에 어려움이 있다 String 클래스는 문자열의.. 2023. 4. 28.
반응형