클래스에서 파생 클래스가 부모 클래스의 함수를 재정의 하여 사용 하는 것

프로세스는 운영체제에서 실행되는 프로그램의 최소단위프로세스는 cpu의 코에에서 실행이 된다.CPU 코어에서 돌아가는 프로그램 단위이다.CPU 한개의 코어에서 한 번에 한 개의 쓰레드의 명령을 실행시킨다.한개의 프로세스는 최소 한 개의 쓰레드로 이루어짐두 개 이상의 쓰레

CPU에서는 연산을 처리할 때 register에 데이터를 기록한 다음에 연산을 수행한다.레지스터의 크기는 8바이트로 작고 수도 많지 않다.그렇기에 데이터를 메모리에 저장을 하고 메모리에서 레지스터로 값을 가져와 사용하고 다시 가져다 놓는 식으로 작동한다.. (컴퓨터 구
일반 생성자와 소멸자처럼 복사 생성자라는 것이 존재한다.말 그대로 객체를 생성할 때 다른 객체를 복사하여 생성한다고 이해하면 된다. 위의 코드를 보게 되면 클래스 A에 대한 객체 A1을 A2에 복사하여 생성하고 A3에 A2를 복사하여 생성되는 것을 알 수 있다. 말
만약 이런 코드가 있을 때Implicit함수는 인자로 class인 A를 받아야하는데 밑에 코드에는 5를 넣었을 때도 정상적으로 작동하는 것을 알 수가 있다. 기본적으로 5가 암시적 변환(Implicit Conversion)을 하기 때문에 5에 해당하는 생성자를 찾아 변
사용자가 원하는 타입을 넣어주면 그에 맞게 짜여지는 틀과 같은 역할을 한다.위 코드처럼 들어가는 변수의 타입에 맞게 코드가 실행된다.위 경우들 처럼 클래스 템플릿에 인자를 전달해서 실제 코드를 생성하는 것을 클래스 템플릿 인스턴스화 (class template inst
개발자가 함수 반환값을 반드시 사용해야 하는 상황에서 실수를 방지하도록 돕는 도구이다.이런 경우일 때 사용되고 추가로 \`\`\`\[nodiscard("사용자에 대한 ID를 사용하지 않고 있습니다!")] int GetID(const std::wstring& userN
람다 함수는 익명 함수(anonymous function)로, 간결하게 정의하여 코드의 가독성을 높이고, 함수 객체(functor) 없이도 간편하게 사용할 수 있다.✅ 람다 함수 기본 문법✅ 예제\[] : 캡처 리스트 (외부 변수를 사용할 수 있게 함)\-> 클래스처럼
C++에서 예외(Exception)는 프로그램 실행 중 오류 또는 비정상적인 상황이 발생했을 때 이를 감지하고 적절히 처리하는 메커니즘이다.예외 처리를 사용하면 프로그램이 비정상적으로 종료되는 것을 방지하고, 오류를 보다 체계적으로 관리할 수 있다.C++ 예외 처리는
예외처리 과정에서 delete 해야 했던 것을 못하고 넘어가게 되는 경우가 발생→ 메모리 누수(memory leak)하지만 C++에서는,예외가 발생해 함수에서 빠져나가더라도,그 함수의 스택에 정의된 모든 객체는 자동으로 소멸자 호출됨→ 이 과정을 stack unwind
std::function은 단순 함수뿐만 아니라 operator(), 람다, 멤버 함수, std::bind 등을 포함한 모든 callable 객체를 저장하고 호출할 수 있는 다형적인 함수 래퍼 클래스입니다.템플릿 인자로 함수의 타입(반환, 인자)를 받아 함수 객체를 보
copy elision은 말 그대로 “복사(또는 이동)를 생략하는 최적화이다.copy constructor 또는 move constructor가 호출되어야 하는 지점에서컴파일러가 임시 객체를 만들지 않고, 최종 목적지에 바로 객체를 생성해서복사/이동 생성자 호출 자체를
“이름이 있고, 주소를 잡을 수 있고, 계속 존재하는 객체”를 나타내는 표현식&expr 해서 주소를 얻을 수 있는 애들이 대부분 lvaluex, s, s.a 전부 “실제 메모리 어딘가에 있는 객체”나중에 다시 읽고/쓰고 싶을 때 재사용 가능한 애들 → lvalue“계산
std::move는 단지 x를 T&&로 static_cast 해주는 함수→ “이 값은 이제 rvalue(xvalue)처럼 취급해도 좋다”는 의사를 알리는 역할메모리 복사 X자원 이동 X내부 상태 변경 X→ 진짜 “move” 작업은 move constructor / mo