묻공러
'C++/[노코프] Tips' 카테고리의 글 목록 (2 Page)

C++/[노코프] Tips

C++/[노코프] Tips

[C++ Tips] switch case

switch case의 예시 코드는 아래와 같다 #include #include int main() { int x = 0; switch (x) { case 1: // break; case 2: // [[fallthrough]] case 3: // break; default: // } } 위의 코드 내부는 아래와 같다 if (x

C++/[노코프] Tips

[C++ Tips] Unit Test

유닛테스트는 구현된 부분을 테스트하며 버그를 수정하여 로직의 완성도를 높이는 것이다 유닛테스트의 장점은 초기 단계에서 버그를 잡을 수 있고 샘플 코드의 역할을 한다 또한, 유지 보수를 쉽게 만들어준다 C++에서 Unit Test를 하기 위해서는 Google Test를 이용하는 방법이 있다 이는 빌드해서 바이너리를 실행해야 테스트가 가능하다는 복잡함이 있지만 Unit Test는 그만큼 중요하기 때문에 필수불가결하게 여겨지고 있다 간단한 예시는 아래와 같다 // GameLogic.h #pragma once class Enemy { public: float health; }; class Player { public: void Attack(Enemy& enemy, float damage); }; // GameL..

C++/[노코프] Tips

[C++ Tips] 생성자 리스트

constructor에서 initializer list를 사용하면 object를 더 효율적으로 생성할 수 있다 # 내부에서 선언 vs. initializer list 내부에서 선언하는 코드는 아래와 같다 class A { public: A() { m_b = B("param"); } private: B m_b; }; A의 멤버변수인 m_b가 만들어질 때, B의 constructor를 호출하며 object를 만들고 A의 생성자 내부에서 "param"이 담겨있는 B의 constructor 통해 object를 만들고 m_b에 copy를 한다 이처럼 A의 멤버변수를 만들어내기 위해 B의 오브젝트를 두 번 만들고 copy도 한번 발생하니 효율이 좋지 않다 반면, initializer list를 이용하면 class ..

C++/[노코프] Tips

[C++ Tips] random library

random 한 데이터를 추출하기 위해서는 아래와 같은 방법을 자주 사용한다 #include int main() { srand(time(nullptr)); int radNum = rand() % 100; } 하지만, 이는 사실 균등한 랜덤이 아니다 예를 들어, 랜덤함수가 0부터 9까지 나오는 것이 기본이라는 가정을 한다면 이 함수를 가지고 0 ~ 3까지 나오게 하기 위해서 rand() % 4 를 하게 된다 실제로 0, 1, 2, 3의 비율이 균등하게 나오는 것이 아니라 랜덤함수를 열어보면 0, 1, 2, 3 을 통해 0, 1, 2, 3 4, 5, 6, 7 을 통해 0, 1, 2, 3 8, 9 에서는 0, 1 이처럼 균등하게 나오지 않고 0, 1의 비율이 높은 상태가 된다 따라서 모듈레이션을 통해 랜덤함수..

C++/[노코프] Tips

[C++ Tips] const

const는 최대한 많이 사용하는 것이 좋다 또한, C++ 17부터는 컴파일 타임에 변수를 아는 경우에는 constexpr를 사용하면 된다 const를 많이 사용하는 것은 성능의 이점 때문이 아니라 실수 확률을 줄여주고 더 안전하게 사용하기 위해서이다 # const 예시 1 #include int main() { int a = 0; a = 1; a = 2; const int a = 0; const int b = 1; const int c = 2; // 변수의 재사용을 최소화 const int d = get_integer();// 해당 함수에 불러진 값이 유지되니 안전함 constexpr int e = 3; // 컴파일 타임에 값을 아는 경우 } # const 예시 2 - 클래스 member #includ..