본문 바로가기

반응형

전체 글

(425)
[C++] r-value 레퍼런스(reference) 완벽 가이드 들어가며 C++11 부터 & 연산자로 표기 되는 참조 타입에 추가하여 && 연산자로 표기 되는 r-value 레퍼런스라는 새로운 개념이 추가 되었다. 이번 포스트에서는 r-value 란 무엇인지, 무슨 이유로 추가되었는지, 어떤 경우에 유용하게 사용할 수 있을지에 대해 자세히 살펴 보도록 하겠다. r-value 란? r-value 라는 용어가 생소한 분들을 위해 r-value가 무엇인지 먼저 알아 보도록 하자. r-value를 한줄로 요약하면 '오른쪽(right)에만 올 수 있는 값'이라고 정의할 수 있다. 아직 뜬 구름 잡는 소리 처럼 들리겠지만 잠시만 인내심을 가지고 아래 예제를 살펴 보자. int main() { int v1 = 0, v2 = 0; v1 = 10; // ok 10 = v1; // e..
[C++] constexpr 조건문 들어가며 다른 프로그래밍 언어와 C++의 큰 차이점을 들자면 C++ 표준 위원회는 강박증이라고 생각될 정도로 컴파일 타임에 뭔가를 하는 것에 집착하는것 처럼 보인다. 오늘 포스트에서 다루어 볼 constexpr도 그 중의 하나로써, 이전 포스트 constexpr 상수, constexpr 함수 에서 constexpr을 이용해 컴파일 타임 상수와 컴파일 타임에 실행 되는 함수에 대해 살펴 본것에 이어 컴파일 타임에 조사 되는 if 문을 살펴 보고자 한다. if constexpr 일반적인 조건문은 실행 시간에 조건식을 조사하는 반면에 constexpr 조건문은 컴파일 시간에 조건식을 조사한다. 이 때 if constexpr의 조건식에 들어가는 조건문은 반드시 컴파일 타임에 값을 결정할 수 있어야만 한다. //..
[C++] constexpr 함수 들어가며 이전 포스트 'constexpr 상수'에서는 컴파일 타임 상수로써의 constexpr 키워드에 대해 살펴 보았다.이번 포스트에서는 컴파일 타임 함수로써의 constexpr 함수의 개념과 특징에 대해 살펴 보는 시간을 갖도록 하겠다. constexpr 함수의 개념 먼저 아래의 코드 샘플을 살펴 보자. constexpr 함수의 형식은 기존 C 또는 C++에서의 함수와 매우 비슷하다. 다만 앞에 constexpr 키워드를 붙여 주기만 하면 된다. // C/C++의 일반적인 함수 // // int add(int a, int b) // { // return a + b; // } // constexpr 키워드가 붙은 함수 constexpr int add(int a, int b) { return a + b;..
[C++] constexpr 상수 들어가며 이번 포스트에서는 C++11 부터 새로이 추가된 constexpr 키워드에 대해 살펴 보도록 하겠다. 먼저 constexpr에 대해 이해하기 위해서는 기존 C++의 const에 대해 먼저 이해 해야할 필요가 있다. 아래 예제를 살펴 보자. int main() { const int c1 = 10; c1 = 20; // error! } 위 예제는 간단하게 const 상수를 정의하고 값을 변경하고 있다. C++에서 const 한정자로 정의된 변수는 값을 바꿀수 없음을 의미하므로 위 코드를 컴파일 하게 되면 에러가 발생하게 된다. 그리고 C++11 부터 상수를 만드는 또 다른 키워드인 constexpr이 등장한다. constexpr c2 = 10; c2 = 20; // error! constexpr 역..
[C++] iomanipulator 완벽 가이드 들어가며 이번 포스트에서는 C++의 출력 포멧을 조절할 수 있는 iomanipulator에 대해 살펴 볼 것이다. 자세한 동작 원리는 나중에 연산자 오버로딩에서 깊게 살펴 보도록하고 이번 시간에는 iomanipulator의 개념과 사용 방법을 위주로 다룰 예정이다. std::dec 변수 값을 10진수로 출력 std::hex 변수 값을 16진수로 출력 std::setw 문자열 출력시 개수 지정 std::setfill 공백을 채울 문자 지정 std::left 문자열 왼쪽 정렬 iomanipulator란? C++에서 입력이나 출력의 형태를 지정하기 위해 사용하는 것을 iomanipulator라고 한다. 설명에 앞서 먼저 아래의 예제 코드를 살펴 보도록하자. 아래 코드는 간단하게 int 타입의 변수를 출력하고 ..
[C++] 표준 입출력 완벽 가이드 들어가며 이번 포스트는 C++ 기초 강좌로써 표준 입출력에 대해 살펴 보도록 하겠다. 이번 포스트는 어떻게? 왜? 라는 이해 보다는 그냥 이런것이 있구나라는 받아들이는 마음으로 가볍게 읽으면 된다. 표준 입출력? 표준 입출력은 우리가 C++ 프로그램을 만들고 실행 시켰을 때 새까만 콘솔창에 텍스트를 출력하거나 입력하는 것을 의미한다. C++에서 표준 입출력을 사용하기 위해서는 iostream, cout, cin. 이렇게 세 가지 대해 알아야 한다. 아래의 예제 코드를 살펴 보면서 이 세 가지 키워드에 대해 익숙해져 보도록 하겠다. C++ 표준 입출력 예제 코드 #include int main() { int age = 0; std::cout age; std::cout
[VBA] 클래스(class) 완벽 가이드 이 포스트는 Excel Macro Mastery 사이트의 'VBA Class Modules - The Ultimate Guide(by Paul Kelly)'의 내용을 다시 정리한 것입니다. 이번 포스트에서는 VBA의 클래스 모듈에 대해 다룹니다. 클래스 요약 용어 설명 클래스(Class) 사용자는 클래스를 기반으로 객체를 만들 수 있습니다 메소드(Method) 클래스 모듈의 공용 함수 또는 서브루틴 멤버 변수(Member Variable) 클래스 모듈에 선언된 변수 프로퍼티(Property) 변수 처럼 사용되는 특수 함수 또는 서브루틴 프로퍼티 타입(Property Type) Get, Set, Let 생성자(Event Initialize) 클래스 모듈 객체가 생성될 때 자동으로 실행되는 서브루틴 소멸자(..
[C++] CSV 포멧 메타 데이터 리더 들어가며 이번 포스트는 새로운 기술이나 개념에 대한 소개가 아니라 이전에 만들었던 [C++/C#] CSV 파일 읽기를 확장하여 csv의 데이터를 구조화된 데이터에 저장하는 아이디어에 대해 소개하고자 한다. 본 포스트는 C++에 대해 어느 정도 이해가 있음을 가정하고 프로그래밍 기본적인 내용들에 대해서는 다루지 않고 실제 서비스 과정 중에 도움이 되었던 아이디어들에 대해 집중하여 살펴 보도록 한다. 생각의 시작 게임을 만들다 보면 캐릭터 레벨 정보, 아이템 정보와 같은 수많은 메타 데이터를 메모리에 올려두고 수시로 검색해야한다. 이럴 때 DB또는 CVS엑셀과 같은 테이블로 부터 데이터를 읽어 클래스나 구조체 같은 레코드에 저장하고 키를 이용하여 검색하면 여러모로 편하다. 하지만 매번 새로운 메타 데이터가 ..

반응형