⭐ Programming/C++
callback 함수
callback 함수
2023.09.18callback 함수는 다른 함수에게 인자로 전달되어 특정 이벤트 발생 시 호출되는 함수입니다. 어떤 함수(=혹은 메소드)를 실행하는 도중에 특정 이벤트가 발생하면, 이벤트 핸들러 함수인 콜백 함수가 자동으로 실행됩니다. 목차 callback 함수 callback 함수란? callback 함수는 다른 함수에게 인자로 전달되어 특정 이벤트 발생 시 호출되는 함수입니다. 어떤 함수(=혹은 메소드)를 실행하는 도중에 특정 이벤트가 발생하면, 이벤트 핸들러 함수인 콜백 함수가 자동으로 실행됩니다. callback 함수 실행 절차 1. 함수 포인터 전달 Callback 함수는 일반적으로 다른 함수에게 인자로 전달됩니다. 이때, Callback 함수의 메모리 주소를 가리키는 함수 포인터를 전달합니다. 2. 이벤트 ..
[C++] smart pointer
[C++] smart pointer
2022.04.26Smart Pointer 인프런 Rookiss님의 'Part1: C++ 프로그래밍 입문' 강의를 기반으로 정리한 필기입니다. 😎[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 강의 들으러 가기! Dangling Pointer 더보기 #include using namespace std; #include #include #include #include #include #include class Knight { public: Knight() { cout
[C++]L-value와 R-value, R-value reference
[C++]L-value와 R-value, R-value reference
2022.04.24L-value vs. R-value 인프런 Rookiss님의 'Part1: C++ 프로그래밍 입문' 강의를 기반으로 정리한 필기입니다. 😎[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 강의 들으러 가기! L value L value : 단일식을 넘어서 계속 지속되는 개체 메모리 위치를 참조. 주소가 있는 애들. 대개 식별자. const가 붙으면 수정할 수 없는 l-value가 된다. R value R value : L value가 아닌 나머지 (임시 값, 열거형, 람다, i++ 등) 표현식 종료 후 없어지는임시적인 값 리터럴 임시변수 임시객체. const 로 L value를 R value로 바꿀 수 있다. L value Reference vs. R valu..
[C++] 콜백 함수 (Callback function)
[C++] 콜백 함수 (Callback function)
2022.04.17콜백 함수 (Callback function) 인프런 Rookiss님의 'Part1: C++ 프로그래밍 입문' 강의를 기반으로 정리한 필기입니다. 😎[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 강의 들으러 가기! 콜백 함수 함수 포인터 + 함수 객체 + 템플릿 콜백 (Callback) : 다시 호출하다? 역으로 호출하다? 게임을 만들 때 이런 콜백의 개념이 자주 등장한다. ex) MoveTask 실습 등 어떤 상황이 일어나면 -> 이 기능을 호출해줘 ex) UI 스킬 버튼을 누르면 -> 스킬을 쓰는 함수를 호출 콜백 함수의 단점 함수 포인터는 상태를 저장할 수 없다. 함수 포인터로 콜백 함수를 만드는건 간단한 일이지만 상태를 저장할 수 없다는 단점이 있다..
[C++] 템플릿(Template) 2: 클래스 템플릿
[C++] 템플릿(Template) 2: 클래스 템플릿
2022.04.17클래스 템플릿 인프런 Rookiss님의 'Part1: C++ 프로그래밍 입문' 강의를 기반으로 정리한 필기입니다. 😎[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 강의 들으러 가기! 클래스 템플릿 #include using namespace std; class RandomBox{ public: int GetRandomData() { int idx = rand() % 10; return _data[idx]; } public: int _data[10]; }; int main(){ srand(static_cast(time(nullptr))); RandomBox rb1; for (int i = 0; i < 10; i++) { rb1._data[i] = i; } i..
[C++] 템플릿(Template) 1: 함수 템플릿
[C++] 템플릿(Template) 1: 함수 템플릿
2022.04.16템플릿 기초 1 인프런 Rookiss님의 'Part1: C++ 프로그래밍 입문' 강의를 기반으로 정리한 필기입니다. 😎[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 강의 들으러 가기! 템플릿이란? 템플릿 : 함수나 클래스를 찍어내는 틀 템플릿 종류 함수 템플릿 클래스 템플릿 함수 템플릿 기초 #include using namespace std; template void Print(T a) { cout
[C++] 함수 객체
[C++] 함수 객체
2022.04.16함수 객체 인프런 Rookiss님의 'Part1: C++ 프로그래밍 입문' 강의를 기반으로 정리한 필기입니다. 😎[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 강의 들으러 가기! 함수 포인터 단점 1) 시그니처가 안 맞으면 사용할 수 없다 pfunc = &HelloNumber; // 사용불가능 이 경우 *pfunc(void)이기 때문에 int형인 HelloNumber를 받을 수 없다 2) 상태를 가질 수 없다 #include using namespace std; void HelloWorld() { cout
[C++] 함수 포인터 2
[C++] 함수 포인터 2
2022.04.16함수 포인터 2 인프런 Rookiss님의 'Part1: C++ 프로그래밍 입문' 강의를 기반으로 정리한 필기입니다. 😎[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 강의 들으러 가기! 함수 포인터 Ver1. #include using namespace std; int Test(int a, int b) { cout
[C++] 함수 포인터 1
[C++] 함수 포인터 1
2022.04.15함수 포인터 1 인프런 Rookiss님의 'Part1: C++ 프로그래밍 입문' 강의를 기반으로 정리한 필기입니다. 😎[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 강의 들으러 가기! 포인터 int main() { int a = 10; // 바구니 주소 // pointer[ 주소 ] -> 주소 [ ] typedef int DATA; // 1) 포인터 * // 2) 변수 이름 pointer // 3) 데이터 타입 int DATA* pointer = &a; // 함수 typedef int(FUNC_TYPE)(int a, int b); using FUNC_TYPE = int(int a, int b); } 함수 포인터 함수 포인터는 함수를 가리키는 포인터다. 반환..
[C++] 전방선언
[C++] 전방선언
2022.04.12전방선언 인프런 Rookiss님의 'Part1: C++ 프로그래밍 입문' 강의를 기반으로 정리한 필기입니다. 😎[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 강의 들으러 가기! 헤더 추가 ver. vs. 전방선언 Ver1. 헤더를 추가하여 클래스 정보를 불러오는 방법 - #include로 헤더를 추가한다. - 클래스 사이즈만큼 불러온다. - 클래스 사이즈만큼 불러오기 때문에 클래스의 크기가 크면 메모리 소모가 크다. Ver2. 전방선언을 하고 참조 형태로 가지고 오는 방법 - class 클래스명 형식으로 전방선언한다. - 클래스를 참조해서 데이터를 사용한다. - 포인터 사이즈만큼만 메모리가 필요하다. (32bit 운영체제는 4byte, 64bit 운영체제는..
[C++] 캐스팅: static, dynamic, const, reinterpret cast
[C++] 캐스팅: static, dynamic, const, reinterpret cast
2022.04.10캐스팅 4총사 (static, dynamic, const, reinterpret cast) 인프런 Rookiss님의 'Part1: C++ 프로그래밍 입문' 강의를 기반으로 정리한 필기입니다. 😎[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 강의 들으러 가기! cast의 종류 : static cast, dynamic cast, const cast, reinterpret cast static cast - static cast는 컴파일 타임에 진행된다. - 타입 변환에 자주 사용. 다운 캐스팅, 업 캐스팅 시 사용 가능. - Cast 시 안전 검사를 하지 않는다. dynamic cast - RTTI를 기반으로 런타임에 적용한다. - cast로 클래스 간 Up, ..
[C++] 얕은 복사 vs 깊은 복사 2
[C++] 얕은 복사 vs 깊은 복사 2
2022.04.10얕은 복사 vs 깊은 복사 2 인프런 Rookiss님의 'Part1: C++ 프로그래밍 입문' 강의를 기반으로 정리한 필기입니다. 😎[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 강의 들으러 가기! 1. 암시적 복사 생성자 Steps 1) 부모 클래스의 복사 생성자 호출 2) 멤버 클래스의 복사 생성자 호출 3) 멤버가 기본 타입일 경우 메모리 복사 (얕은 복사 Shallow Copy) 더보기 #include using namespace std; // 얕은 복사 vs 깊은 복사 2 class Pet{ public: Pet() { cout