<개인공부>/[C++] 55

[C++] RTTI, 타입 정보 얻기

안녕하세요. BlockDMask입니다. 오늘은 RTTI라는 것에 대해서 알아보려고 하는데요, 간단히 말해서 실행시간에 타입의 정보를 얻을 때 사용하는 것입니다. 즉 타입을 알아올 때 사용. 1. C++ RTTI란? 2. C++ RTTI 사용 방법 1. C++ RTTI 설명 1-1) C++ RTTI와 typeid RTTI는 Run Time Type information이라 하며, 프로그램 실행 중에 실시간으로 데이터의 타입을 얻어올 때 사용하는 방법입니다. RTTI 기술을 이용해서 데이터 타입을 얻어올 수가 있는데요. 이때 사용하는 것이 typeid 연산자입니다. typeid 연산자는 헤더에 존재합니다. typeid(변수) typeid(데이터 타입) 이런 식으로 데이터 타입의 정보를 얻어올 수 있습니다. ..

[C++] 연산자 재정의 기본 (overator overloading)

안녕하세요. BlockDMask입니다. 오늘은 C++ 연산자 재정의 하는 방법에 대해서 알아보려고 합니다. 1. 연산자 재정의란? 2. 연산자 재정의 예제 (사용자 정의, primitive 타입 순서, 연산자 오버 로딩 우선순위) 1. C++ 연산자 재정의 방법 연산자 재정의라는 것은 우리가 일반적인 타입들의 덧셈 int 들의 덧셈 1+2 = 3, 곱셈 3 * 4 = 12 이걸 코드로 나타내면 a = 1 + 2 b = 3 * 4 이런 식으로 나타낼 수 있는데 Car라는 클래스가 있다고 했을 때 Car 객체인 c1, c2의 객체끼리의 덧셈이 일반적으로는 불가능한데, 연산자 재정의를 통해서 Car c3 = c1 + c2 가 가능하도록 할 수 있습니다. 이걸 연산자 재정의라고 하는데요. +, -, * 등의 연..

[C++] 람다 표현식, lambda에 대해서

안녕하세요. BlockDMask입니다. 오늘은 C++11, 14에서 추가된 lambda 표현식에 대해 알아보겠습니다. 1. 람다 표현식 2. 람다 표현식 사용 방법과 구조 3. 람다의 필요성, 사용 예제 1. C++ 람다 표현식 lambda는 람다 표현식, 람다 함수, 익명 함수 등의 이름으로 불립니다. 일단 람다 함수가 어떻게 생겨먹었는지 먼저 보겠습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include #include using namespace std; // 일반 함수 정의 void sum1(int a, int b) { cout

[C++] 멤버 초기화 리스트 (member initializer lists)

안녕하세요. BlockDMask 입니다. 오늘은 C++ 멤버 초기화 리스트 라는 주제로 이야기를 해보려합니다. 1. 멤버 초기화 리스트란? 2. 멤버 초기화 리스트를 꼭 사용해야하는 경우 1. C++ member initializer lists (멤버 초기화 리스트) 일단 멤버 초기화 리스트 사용방법은 아래와 같습니다. 1. 멤버 초기화 리스트는 생성자 괄호() 뒤에 콜론(:)으로 표기합니다. 2. 초기화 할 멤벼 변수들을 쉼표로 구분하여 표기합니다. 3. 이때 소괄호() 를 이용해서 멤버 변수를 초기화 합니다. (C++11 이후 부터는 중괄호 초기화, 유니폼 초기화가 가능합니다.) 실제 코드에서 확인해보겠습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include #i..

[C++] nullptr (널 포인터 리터럴)

안녕하세요. BlockDMask입니다. 오늘은 C++11에서 도입된 새로운 키워드 nullptr에 대해서 이야기해보려 합니다. 기존 C언어, C++을 사용하시는 많은 분들이 0, NULL 이렇게 널을 사용하셨을 텐데요. C++11부터는 nullptr을 사용하시면 좋을 것 같습니다. 1. C++ nullptr 이란? 2. C++ NULL, nullptr의 차이점 1. C++11 nullptr 설명 모든 변수에는 초기화하는 방법이 있습니다. 기존 C, C++에서는 포인터를 초기화할 때 0을 이용해서 초기화를 하였는데요. C++11부터는 nullptr을 가지고 초기화를 하시면 됩니다. 1-1) nullptr nullptr을 한 줄로 말하자면 널 포인터 값(null pointer value)을 나타내는 포인터 ..

<개인공부>/[C++] 2021.02.17 (1)

[C++] 디폴트 매개변수 (default parameter)

안녕하세요. BlockDMask입니다. 오늘은 C++의 편리한 문법 디폴트 매개변수, 디폴트 파라미터, default paramter에 대해서 알아보려고 합니다. 1. default parameter 정리 2. default parameter 주의할 점 1. C++ 디폴트 매개변수, 디폴트 파라미터란? - 디폴트 매개변수? 한 문장으로 정리를 하면 함수 호출 시 인자를 넣지 않으면, "미리 정해준 인자 값"이 대신 들어가게 됩니다. 아 물론. 반대로, 인자로 값을 넣게 되면 "미리 정해둔 인자 값"이 아니라 지금 넣는 인자가 들어가게 됩니다. 디폴트 매개변수는 함수의 인자에 "= 값" 을 사용해서 값을 정해줄 수 있습니다. 들어온 숫자를 더해서 출력하는 함수 void addNum(int a, int b)..

[C++] constexpr 상수

안녕하세요. BlockDMask 입니다. 오늘은 C++11 부터 나온 contexpr 이라는 것에 대해서 알아보려고 합니다. const 와 비슷하게 상수를 만들어 주는 또 다른 키워드 constexpr 이 무엇인지 한번 알아보겠습니다. C++ const, constexpr (constexpr 은 C++11에 처음 나왔으며 C++14 에서 개선됨 어짜피 현재는 2021년이기 때문에 C++11이든 14이든 예전에 생긴 문법입니다.) constexpr 이란. 컴파일 시간 상수를 만드는 키워드 컴파일 시간에 결정되는 상수 값으로만 초기화 할 수 있다. constexpr이 변수를 상수로 만들어 준다고 하는데 그럼 const와 똑같은데 무슨 차이가 있나요? 라고 질문 하실 수 있는데, 좀 더 상세하게 상수에 대해서..

[C++] 인라인 함수 (inline function)

안녕하세요 BlockDMask 입니다. 오늘은 C++의 inline 함수에 대해서 알아보겠습니다. inline function이란? 인라인 함수 inline function? 함수 반환 타입 앞에 'inline"을 표기한 함수 inline 반환형 함수이름 ( 매개변수 ) 이렇게 함수 이름앞에 inline을 붙이면 일반 함수와 달리, 프로그램이 생성될때 함수가 치환되어 생성됩니다. 아래 예제에서 간단하게 예시를 들어보겠습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include int add1(int a, int b) { return a + b; } inline int add2(int a, int b) { return a + b;..

<개인공부>/[C++] 2021.02.10 (1)

[C++] 2진수 8진수 16진수 표기법, 자릿수 표기법

안녕하세요. BlockDMask입니다. C++에서 정수를 표현할 때 진수를 표현하는 방법과 자릿수를 표기하는 방법에 대해서 알아보겠습니다. 1. 8, 16, 2진수 표기법 2. 자릿수 표기법 1. C++ 2진수, 8진수, 16진수 표기법 - C++ 2진수 표기 "0b숫자(2진수)" 2진수로 표기하는 것은 C++ 11에서부터 가능합니다. 표기하고자 하는 숫자 앞에 숫자 0과 알파벳 b "0b"를 붙이게 되면 2진수로 표기가 됩니다. 0b 뒤에 오는 숫자는 2진수로 표현된 숫자 이어야 합니다. 즉 0b1010, 0b10 등 0과 1로 이루어진 2진수 이어야 하는 것입니다. - C++ 8진수 표기 "0숫자(8진수)" 8진수로 표기하려 하면 숫자 0을 붙이면 됩니다. 0 뒤에 오는 숫자는 8진수로 표기된 숫자 ..

[C++] std::setw, std::setfill, std::left, std::right (입출력 형태 지정2)

안녕하세요. BlockDMask 입니다. 지난시간에 이어서 오늘도 조정자 함수 io manipulator 들에 대해서 알아보려고합니다. 오늘은 왼쪽 정렬을하는 std::left, 오른쪽 정렬을하는 std::right, 출력시 개수를 지정하는 std::setw, 빈 공간을 채우는 std::setfill 함수. 이렇게 총 4개의 함수에 대해서 알아보겠습니다. 1. C++ std::setw, std::setfill 함수 설명 2. C++ std::left, std::right 함수 설명 1. std::setw, std::setfill 함수 설명 - 헤더파일 - std::setw 함수 std::setw(n) 출력시 길이를 n으로 지정. std::setw 출력에 사용할 필드의 넓이를 설정합니다. 즉 가로길이를 지..