[C++] 스마트 포인터 : unique_ptr, shared_ptr, weak_ptr
개요 안녕하세요. 이번 글에서는 C++의 스마트 포인터(smart pointer)에 대해 알아보겠습니다. C++에서 new로 할당한 메모리는 delete로 직접 해제해야 하는데, 해제를 빠뜨리거나 중간에 예외가 발생하면 메모리 누수(memory leak)가 생깁니다. 스마트 포인터는 이런 …
개요 안녕하세요. 이번 글에서는 C++의 스마트 포인터(smart pointer)에 대해 알아보겠습니다. C++에서 new로 할당한 메모리는 delete로 직접 해제해야 하는데, 해제를 빠뜨리거나 중간에 예외가 발생하면 메모리 누수(memory leak)가 생깁니다. 스마트 포인터는 이런 …
함수를 까먹어서 기록하기 위한 글입니다.어떤 문자열이 있을 때 정해진 포맷이 있다면 그 포맷에서 데이터를 추출하는 경우가 있습니다. C++인 경우엔 regex를 사용하면 정확한 문자열 검증이 가능하지만, 간단하게 사용할 수 있는 sscanf_s …
가상 함수는 객체 지향 프로그래밍에서, 상속 받는 클래스 내에서 오버라이딩 될 수 있는 함수입니다.virtual 키워드를 붙여 사용가능합니다.virtual을 붙이면 파생 클래스에서 재정의할 것으로 보이는 멤버 함수를 의미합니다. 사용 방법은 아래와 같습니다. …
C++에서 사용하는 데이터 형식의 종류(자료형)와 그 값의 범위는 아래와 같습니다. 해당 값은 아래 코드와 같이 sizeof로 확인이 가능합니다. 일반적으로 데이터를 표현할 때 데이터 비트 수가 n개이면 2의 n승까지 데이터 표현이 …
이번 글에서는 클래스 템플릿에 대해 알아보겠습니다. 클래스 템플릿도 함수 템플릿처럼 만드시면 됩니다. 클래스 멤버 변수나 함수에 템플릿을 지정해주셔서 위와 같이 사용하시면 됩니다.만약 클래스 내부에 멤버 함수를 선언하고, 외부에 멤버 함수를 …
이번 글에서는 특정한 좌표에서 각도, 거리를 입력했을 때 좌표를 구하는 방법을 알아보겠습니다. 해당 방법을 알기 위해서 삼각함수(sin, cos)를 사용해야하는데 이 함수들은 매개변수로 라디안을 사용합니다.보통 일반적으로 사용하는 0도, 90도, 180도 등등은 60분법(Degree)이라 합니다. …
안녕하세요 이번 글에서는 함수 오버로딩에 대해 알아보겠습니다. 우선 아래 코드의 문제점을 무엇일까요? swap(&c, &d);를 보시면 double형 주소를 인자로 전달합니다. 하지만 swap 함수는 int 포인트로 인자를 받으므로 “double *”가 “int *”로 형변환이 …
안녕하세요 오늘은, C++의 대소문자 변환하는 함수 tolower, toupper 함수를 알아보겠습니다.tolower, toupper함수는 인자로 1개의 아스키 코드 값을 전달 하면 해당 문자의 대소문자를 변환해 줍니다. 대문자 -> 소문자로 변환하는 tolower의 함수 원형은 …
처음에 개발을 배우면 아래와 같이 둘중 하나를 가지고 코딩하게 됩니다. 또는 저는 std:: 쓰는게 싫어서 using namespace std;를 많이 사용했습니다.이 namespace는 왜 쓰는 걸까요? namespace는 코드 영역을 정의하기 위해 사용합니다. …
저번 글에서 비트 단위 연산자에 대해서 설명했었습니다.이미지가 아니라 눈으로 보고, 실제로 조작하는 프로그램이 있었으면 좋겠다고 생각해서 만들게 됐네요. 아래 파일을 다운받고 실행 하시면 됩니다. BitwiseTest.exe를 실행 시키면 아래와 같이 실행 …