λͺ©λ‘μ 체 κΈ (1096)
KoreanFoodie's Study
GoF μ λμμΈ ν¨ν΄κ³Ό κ°μλ₯Ό μ°Έκ³ νμ¬ λμμΈ ν¨ν΄μ λν λ΄μ©μ μ 리νκ³ μμ΅λλ€. Single Responsibility Principle (λ¨μΌ μ± μ μμΉ) Single Responsibility Principle, μ€μ¬μ SRP λ λ¨μΌ μ± μ μμΉμΌλ‘, λͺ¨λ ν΄λμ€κ° νλμ μ± μμ κ°μ§λ©°, ν΄λμ€κ° κ·Έ μ± μμ μμ ν μΊ‘μνν΄μΌ ν¨μ μλ―Ένλ€. μλ μ½λλ₯Ό 보μ. #include #include #include #include #include using namespace std; struct Journal { string title; vector entries; explicit Journal(const string& title) : title{title} { } void add(const stri..
λͺ¨λμ μ½λλ₯Ό μ°Έκ³ νμ¬ ν΅μ¬ λ΄μ©μ κ°μΆλ¦¬κ³ μμ΅λλ€. μμΈν λ΄μ©μ λͺ¨λμ μ½λμ μΉμ΄λ¨Ήλ C++ κ°μ’λ₯Ό μ°Έκ³ ν΄ μ£ΌμΈμ! std::optional (C++17 μ΄μ - ) μλ₯Ό λ€μ΄μ μ΄λ ν map μμ μ£Όμ΄μ§ ν€μ λμνλ κ°μ΄ μλμ§ νμΈνλ ν¨μλ₯Ό λ§λ€κ³ μΆλ€κ³ ν΄λ³΄μ. std::optional μ μ¬μ©νλ©΄ μ΄λ₯Ό κΉλνκ² κ΅¬νν μ μλ€! #include #include #include #include std::optional GetValueFromMap(const std::map& m, int key) { auto itr = m.find(key); if (itr != m.end()) { return itr->second; } // nullopt λ μ μ μλ κ°μ²΄λ‘ λΉμ΄μλ optional μ ..
λͺ¨λμ μ½λλ₯Ό μ°Έκ³ νμ¬ ν΅μ¬ λ΄μ©μ κ°μΆλ¦¬κ³ μμ΅λλ€. μμΈν λ΄μ©μ λͺ¨λμ μ½λμ μΉμ΄λ¨Ήλ C++ κ°μ’λ₯Ό μ°Έκ³ ν΄ μ£ΌμΈμ! νμΌμ μ°Ύμ보μ νμΌ μμ€ν λΌμ΄λΈλ¬λ¦¬λ νμΌ λ°μ΄ν° μ μ μΆλ ₯μ λ΄λΉνλ νμΌ μ μΆλ ₯ λΌμ΄λΈλ¬λ¦¬ () κ³Όλ λ€λ₯΄λ€. μ κ²½μ°, νμΌ νλκ° μ£Όμ΄μ§λ©΄ ν΄λΉ νμΌμ λ°μ΄ν°λ₯Ό μ½μ΄λ΄λ μν μ νμ§λ§, κ·Έ μΈμ νμΌμ κ΄ν μ 보 (νμΌ μ΄λ¦, μμΉ, λ±λ±) μ κ΄ν λ°μ΄ν°λ₯Ό μμ ν μ λ μλ€. λ°λ©΄μ νμΌ μμ€ν λΌμ΄λΈλ¬λ¦¬μ κ²½μ°, νμΌμ κ΄ν μ 보 (νμΌ λ©νλ°μ΄ν)μ λν μ κ·Όμ λμμ£Όλ μν μ μννλ©°, νμΌ μ체λ₯Ό μ½λ μΌμ μννμ§ μλλ€. μ½κ² λ§ν΄μ νλ λμ€ν¬ μ΄λκ°μ μλ a.txt λΌλ νμΌμ μ°Ύκ³ μΆλ€λ©΄ filesystem λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νκ² λκ³ , ν΄λΉ νμΌμ μ°Ύ..
λͺ¨λμ μ½λλ₯Ό μ°Έκ³ νμ¬ ν΅μ¬ λ΄μ©μ κ°μΆλ¦¬κ³ μμ΅λλ€. μμΈν λ΄μ©μ λͺ¨λμ μ½λμ μΉμ΄λ¨Ήλ C++ κ°μ’λ₯Ό μ°Έκ³ ν΄ μ£ΌμΈμ! C μ€νμΌμ λμ μμ±μ λ¬Έμ μ #include #include #include int main() { srand(time(NULL)); for (int i = 0; i < 5; i++) { printf("λμ : %d \n", rand() % 100); } return 0; } μμ κ°μ C μ€νμΌμ λμ μμ±μ λ€μκ³Ό κ°μ λ¬Έμ μ λ€μ΄ μλ€ : λμμ²λΌ 보μ΄μ§λ§ 무μμλ‘ μμ±λ κ²μ΄ μλ (첫 μ«μλ§ λ¬΄μμ, λλ¨Έμ§λ μκ³ λ¦¬μ¦μΌλ‘ μμ±) μλκ°μ΄ λ무 μ²μ²ν λ³ν¨ (μμμλ μ΄ λ¨μ) 0 λΆν° 99 κΉμ§ κ· λ±νκ² λμλ₯Ό μμ±νμ§ μμ (rand() μ μ΅λκ°μ λ°λΌ rand() %..
λͺ¨λμ μ½λλ₯Ό μ°Έκ³ νμ¬ ν΅μ¬ λ΄μ©μ κ°μΆλ¦¬κ³ μμ΅λλ€. μμΈν λ΄μ©μ λͺ¨λμ μ½λμ μΉμ΄λ¨Ήλ C++ κ°μ’λ₯Ό μ°Έκ³ ν΄ μ£ΌμΈμ! μ 체 λ¬Έμμ΄ λ§€μΉνκΈ° λ‘κ·Έ νμΌμ μΆμΆνλ μ½λλ₯Ό 보μ. #include #include #include int main() { // μ£Όμ΄μ§ νμΌ μ΄λ¦λ€. std::vector file_names = {"db-123-log.txt", "db-124-log.txt", "not-db-log.txt", "db-12-log.txt", "db-12-log.jpg"}; std::regex re("db-\\d*-log\\.txt"); for (const auto &file_name : file_names) { // std::boolalpha λ bool μ 0 κ³Ό 1 λμ μ false, true..
λͺ¨λμ μ½λλ₯Ό μ°Έκ³ νμ¬ ν΅μ¬ λ΄μ©μ κ°μΆλ¦¬κ³ μμ΅λλ€. μμΈν λ΄μ©μ λͺ¨λμ μ½λμ μΉμ΄λ¨Ήλ C++ κ°μ’λ₯Ό μ°Έκ³ ν΄ μ£ΌμΈμ! ν νλ¦Ώ λ©ν ν¨μ ν νλ¦Ώ λ©ν ν¨μλ μ¬μ€ ν¨μλ μλμ§λ§ λ§μΉ ν¨μμ²λΌ λμνλ ν νλ¦Ώ ν΄λμ€λ€μ μλ―Ένλ€. μ΄λ€μ΄ λ©ν ν¨μμΈ μ΄μ λ 보ν΅μ ν¨μλ€μ κ°μ λν΄ μ°μ°μ μννμ§λ§, λ©ν ν¨μλ νμ μ λν΄ μ°μ°μ μννλ€λ μ μ΄ μ‘°κΈ λ€λ₯΄λ€. μμλ₯Ό 보μ. // μμμΈμ§ μ²΄ν¬ if (is_negative(x)) { // Do something... } // νμ μ΄ void μΈμ§ μ²΄ν¬ if (is_void::value) { } μλ μ½λλ₯Ό λλ €λ³΄μ. #include #include template void tell_type() { if (std::is_void::value) { s..
λͺ¨λμ μ½λλ₯Ό μ°Έκ³ νμ¬ ν΅μ¬ λ΄μ©μ κ°μΆλ¦¬κ³ μμ΅λλ€. μμΈν λ΄μ©μ λͺ¨λμ μ½λμ μΉμ΄λ¨Ήλ C++ κ°μ’λ₯Ό μ°Έκ³ ν΄ μ£ΌμΈμ! decltype decltype ν€μλλ C++ 11 μ μΆκ°λ ν€μλλ‘, decltype λΌλ μ΄λ¦μ ν¨μμ²λΌ μ¬μ©λλ€. decltype(/* νμ μ μκ³ μ νλ μ */) μ΄λ, decltype μ ν¨μμλ λ¬λ¦¬, νμ μ μκ³ μ νλ μμ νμ μΌλ‘ μΉνλκ² λλ€. μλ₯Ό λ€μ΄, #include struct A { double d; }; int main() { int a = 3; decltype(a) b = 2; // int int& r_a = a; decltype(r_a) r_b = b; // int& int&& x = 3; decltype(x) y = 2; // int&& A* ..
λͺ¨λμ μ½λλ₯Ό μ°Έκ³ νμ¬ ν΅μ¬ λ΄μ©μ κ°μΆλ¦¬κ³ μμ΅λλ€. μμΈν λ΄μ©μ λͺ¨λμ μ½λμ μΉμ΄λ¨Ήλ C++ κ°μ’λ₯Ό μ°Έκ³ ν΄ μ£ΌμΈμ! μμμ (Constance expression) μ»΄νμΌλ¬κ° μ»΄νμΌ νμμ μ΄λ ν μμ κ°μ κ²°μ ν μ μλ€λ©΄ ν΄λΉ μμ μμμ (Constance expression) μ΄λΌκ³ νννλ€. κ·Έλ¦¬κ³ μ΄λ¬ν μμμλ€ μ€, κ°μ΄ μ μμΈ κ²μ μ μ μμμ(Integral constant expression) μ΄λΌκ³ νκ² λλλ°, μ μ μμμλ€μ λ§€μ° μ°μμκ° λ§λ€. int arr[size]; // size κ° μ μ μμμμ΄μ΄μΌ ν¨ ... template struct A { int operator()() { return N; } }; A a; // number κ° μ μ μμμμ΄μ΄μΌ ν¨ ... e..
λͺ¨λμ μ½λλ₯Ό μ°Έκ³ νμ¬ ν΅μ¬ λ΄μ©μ κ°μΆλ¦¬κ³ μμ΅λλ€. μμΈν λ΄μ©μ λͺ¨λμ μ½λμ μΉμ΄λ¨Ήλ C++ κ°μ’λ₯Ό μ°Έκ³ ν΄ μ£ΌμΈμ! C++ μμ±μ νν μ€μ λ€μκ³Ό κ°μ μ½λλ μ무κ²λ μΆλ ₯νμ§ μλλ€. #include class A { public: A() { std::cout
AddMovementInput ν¨μλ‘ κ°λ¨νκ² μ²λ¦¬νκΈ° ////////////////////////////////////// ////////////////////////////////////// BlasterCharacter.h ////////////////////////////////////// ////////////////////////////////////// #pragma once #include "CoreMinimal.h" #include "GameFramework/Character.h" #include "BlasterCharacter.generated.h" UCLASS() class BLASTER_API ABlasterCharacter : public ACharacter { GENERATED_..