⭐ Programming
[C++20] erase, erase_if, contains, starts_with, ends_with
[C++20] erase, erase_if, contains, starts_with, ends_with
2025.06.29이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
[C++20] Ranged-Based for with Initializer
[C++20] Ranged-Based for with Initializer
2025.05.25이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
[C++20] 어트리트뷰트 (Attribute)
[C++20] 어트리트뷰트 (Attribute)
2025.05.25어트리트뷰트 (Attribute) Attribute 종류들 [[noreturn]]C++11 함수가 값을 반환하지 않음을 표시. return value가 없다. [[deprecated]]C++14 함수가 폐기되었음을 표시. 더 이상 사용하지 않거나 사용하지 않을것을 권유 [[nodiscard]]C++17 함수의 반환 값 무시 시 경고 발생. 버리지 않는다. [[nodiscard("사유")]]C++20 함수의 반환 값 무시 시 경고 발생. 컴파일 에러 시 "사유"를 컴파일러가 보여준다. [[likely]]C++20 확률이 높다. 최적화에 도움이 된다. [[unlikely]]C++20 확률이 낮다. 최적화에 도움이 된다. [[NoUniqueAddress]]C++20 사용 예시 (C+..
[C++20] 람다에서의 템플릿 매개변수 (Template Parameter for Lambda)
[C++20] 람다에서의 템플릿 매개변수 (Template Parameter for Lambda)
2025.05.25람다에서의 템플릿 매개변수 (Template Parameter for Lambda) 람다에서의 매개변수 #include using namespace std;auto sumTyped = [](int a, int b) { return a + b; }; // C++11 Typed Lambda// 두 타입(auto a, auto b)이 달라도 된다.auto sumGeneric = [](auto a, auto b) { return a + b;}; // C++14 Generic Lambda// 후자(decltype(a) b)가 전자(auto a)로 convertible(변환 가능)해야 한다auto sumDeclType = [](auto a, decltype(a) b) { return a + b; }; // C..
[C++20] 템플릿에서 Non-Type 인자 받기 (Non-Type Template Parameter)
[C++20] 템플릿에서 Non-Type 인자 받기 (Non-Type Template Parameter)
2025.05.25템플릿에서 Non-Type 인자 받기 (Non-Type Template Parameter) Non-Type Template Parameter란? Non-Type Template Parameter(NTTP)는 템플릿에서 타입이 아닌 값을 매개변수로 받는 기능이다. C++20 이전에는 정수형, 포인터, 열거형 등 제한된 타입만 사용할 수 있었지만, C++20부터는 구조적 타입(structural type)도 사용할 수 있게 되었다. 기존의 템플릿에서 Non-Type 사용 (C++20 이전) Non-Type int, enum포인터, 참조nullptr_t// typename 대신에 Non-Type이 들어갈 수 있다.template 예시코드templateauto GetDouble(){ return d;}i..
[C++ 20] Concept
[C++ 20] Concept
2025.04.30이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
[Design Pattern] MVC, MVVM 패턴
[Design Pattern] MVC, MVVM 패턴
2024.08.14MVC( Model-View-Controller) 패턴과 MVVM(Model-View-ViewModel) 패턴은 UI 개발에서 사용되는 아키텍처 패턴이다. 각자의 장단점을 파악하고 UI 구조를 설계할 때 사용해보자. 목차 MVC ( Model - View - Controller ) MVC ( Model - View - Controller ) Model- 데이터- ex. HP, MP, Level, 사용 가능한 스킬 View- Controller 통해 건내받은 Model의 데이터를 시각적으로 보여주는 역할- 사용자 인터페이스(User Interface, UI = 사용자에게 보여지는 부분)- 언리얼 엔진의 경우 UUserWidget Controller- Model과 View..
[C++] Effective C++ : Chapter 8 new와 delete를 내 맘대로
[C++] Effective C++ : Chapter 8 new와 delete를 내 맘대로
2024.06.05목차 Chapter 8 new와 delete를 내 맘대로 항목49: new 처리자의 동작 원리를 제대로 이해하자 Q. new operator, delete operator를 클래스 내부 연산자로 오버로딩했습니다! main()의 결과로 옳은 답은 몇번일까요?class Unseen{public: Unseen() { cout 1번.Unseen()Unseen new! 8Unseen delete!~Unseen()2번.Unseen new! 8Unseen()~Unseen()Unseen delete!3번.Unseen new! 4Unseen()~Unseen()Unseen delete! 더보기답: 2번해제를 할 때에도 마찬가지로, 먼저 메모리를 해제한 후 소멸자를 호출해준다매크로로 만들어주는 것도 방법인데..
[C++] Effective C++ : Chapter 7 템플릿과 일반화 프로그래밍
[C++] Effective C++ : Chapter 7 템플릿과 일반화 프로그래밍
2024.05.27목차 Chapter 7 템플릿과 일반화 프로그래밍 항목 41: 템플릿 프로그래밍의 천릿길도 암시적 인터페이스와 컴파일 타임 다형성부터 Q. 다음 문장 중 틀린 것을 고르시오.1. 클래스 및 템플릿은 모두 인터페이스와 다형성을 지원한다.2. 클래스의 경우, 인터페이스는 명시적이며 함수의 시그너처를 중심으로 구성되어 있다.3. 다형성은 프로그램 실행 중에 가상 함수를 통해 나타난다.4. 인스턴스화를 진행하는 함수 템플릿에 어떤 템플릿 매개변수가 들어가느냐에 따라 호출되는 함수가 달라지는데 이를 컴파일 타임 다형성이라고 한다.5. 암시적 인터페이스는 함수 시그너처에 기반하고 있지 않다.6. 템플릿 매개변수의 경우, 인터페이스는 명시적이며 유효 표현식에 기반을 두어 구성됩니다.7. 컴파일..
[C++] Effective C++ : Chapter 6 상속, 그리고 객체 지향 설계
[C++] Effective C++ : Chapter 6 상속, 그리고 객체 지향 설계
2024.05.07목차 Chapter 6 상속, 그리고 객체 지향 설계 항목 32: public 상속 모형은 반드시 "is-a(..는 ...의 일종이다)"를 따르도록 만들자 Q. 다음 보기의 설명 중에 틀린 것을 고르십시오. 클래스 D("Derived)를 클래스 B("Base")로부터 public 상속을 통해 파생시켰다고 가정합니다.1. public 상속은 "is-a(..는 ...의 일종이다)"를 의미한다.2. D 타입으로 만들어진 모든 객체는 또한 B 타입의 객체이지만, 그 반대는 되지 않는다.3. D 클래스는 B 클래스보다 더 큰 메모리 공간을 가진다.4. private으로 상속받으면 public와 protected를 private 멤버로 바꿔준다.더보기답. 3번자식 클래스는 부모 클래스에서 상속받은 ..
[C++] Effective C++ : Chapter 5 구현
[C++] Effective C++ : Chapter 5 구현
2024.04.28Effective C++ : Chapter 5 구현 항목 26: 변수 정의를 늦출 수 있는 데까지 늦추는 근성을 발휘하자. Q. 아래 코드에서 encrypted 변수를 어떻게 초기화하고 있을까요? 아래의 보기 중 옳은 것을 고르시오.std::string encryptPassword(const std::string& password){ std::string encrypted(password); }1. string의 기본 생성자에 의해 만들어지고 password 값이 대입된다.2. string의 복사 생성자에 의해 초기화된다.더보기답: 2번 ( 185~186쪽 )불필요한 기본 생성자 호출이 일어나지 않고 변수의 의미가 명확한 상황에서 변수를 정의함과 동시에 복사 생성자에 의해 초기화가 이루어지고 있..
[C++] Effective C++ : Chapter 4 설계 및 선언
[C++] Effective C++ : Chapter 4 설계 및 선언
2024.04.17Effective C++ : Chapter 4 설계 및 선언 항목 18: 인터페이스 설계는 제대로 쓰기엔 쉽게, 엉터리로 쓰기엔 어렵게 하자 Q. 인터페이스에 대해 설명해보세요.더보기소프트웨어식 인터페이스: 응용프로그램과 운영체제 간의 통신을 연결해주는 인터페이스언어적인 인터페이스:순수 가상함수로만 이루어진 클래스 Q. 인터페이스를 설계할 때, shared_ptr 을 사용하면 좋은 이유에 대해 설명해보세.더보기사용자 정의 삭제자를 통해 교차 DLL 문제 예방할 수 있습니다.반환 타입을 포인터가 아닌 shared_ptr로 만들어서, 메모리 누수 예방할 수 있습니다. Q. 교차 DLL 문제(cross-DLL problem)에 대해 설명해보세요. 왜 교차 DLL 문제가 발생할까요? 이에 대한 해결방안으로..