월 22,000원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
NullPtr 클래스의 연산자 오버로딩
반환 타입이 정의되어있지 않은것 등이 조금 헷갈려서 이전 영상에서 다시 보고 싶은데요, 혹시 어느 부분을 보면 될까요?
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
auto *에 대해서
auto* test2 = e에서 e는 const char *인데 타입 추론 결과가 const char *이므로 최종적으론 (const char **)가 될 것 같았는데 그렇지 않은 이유가 궁금합니다.
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
덱에서의 임의 접근
연결 리스트에서 i번째 원소를 조회하는 것이 느렸던 것 처럼 덱에서도 i번째 동(?)이 어디 있는지 찾는 연산이 느린건가요? 연결 리스트와 덱을 연관지어서 생각하자면, 연결 리스트는 호가 1개뿐인 동들이 연결되어있다고 생각해도 괜찮나요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
vector에서
vector<int>::iterator it; 이거는 단순히 vector클래스에서 using iterator = _Vector_iterator<_Scary_val>; 라고 선언 해줬기 때문에 위처럼 표현 하는게 맞나요?? 간단히 비슷하게 테스트 해본결과 정말 단순히 using 선언만 클래스 안에서 해준, 그 클래스의 맴버객체로도 존재하지 않는 독립적인 클래스로 봐도 되는 건가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
ret과 sp, bp, ip 의 관계/흐름 질문
MAX함수에서 L1 블록에서 ret을 실행하면 CALL을 실행한 주소로 돌아가는데 그 원리가 다음과 같이 진행되는 것으로 이해되는지 궁금해서 질문드립니다. ----------------------------------------------------- 우선 CALL MAX에 의해 현재 ip의 값이 stack에 push 됩니다. 즉, ret 값이 들어갑니다그리고 ip에는 MAX 함수의 주소값이 저장되어 다음부터는 MAX 함수가 실행됩니다. 함수 마지막 부분 "pop rbp"에 의해 rbp에는 CMAIN의 base pointer(주소값)가 저장되고,sp는 코드상 위쪽 "CALL MAX"를 하면서 next instruction(CALL MAX 다음 줄)의 주소값이 저장된 스택의 주소값을 가리킵니다(즉, 코드영역의 "PRINT_DEC 8, rax" 부분의 주소값 = ret을 가리킵니다) 이때 ret 명령어는 pop ip 를 실행함으로써 ip에는 다시 ret가 들어가게 되고, 결국 다음에는 PRINT_DEC 8, rax 이 실행됩니다. 그리고 이제 sp는 2가 들어있는 스택의 주소값을 가리키고 있으므로 복원이 필요합니다.16을 더해 이전에 push 했던 rbx의 값을 가리키게 하고두 번 pop 함으로써 sp가 다시 스택의 시작점을가리키게 함으로써 함수 실행이 완료됩니다.마지막에 CMAIN의 ret는 다시 stack을 pop ip 하는데,이때 ip는 스택의 시작점을 가리키는 주소값이 저장되므로프로세스가 종료됐음을 알 수 있습니다. 따라서 프로세스가 종료됩니다.----------------------------------------------------- 이런 흐름으로 이해했는데, 혹시 잘못 이해하고 있는 부분이 있을까요?
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
함수가 저장되는 메모리에 대해서..
함수 이름이 함수 내용이 시작하는 지점을 가리키고 있다면 작성된 코드(명령어)의 양이 많을 수록 프로그램 실행 시 메모리에서 차지하고 있는 용량이 많아지게 되나요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
void PrintMessage(const char* msg) 함수가 헷갈립니다..
cout << "**************************" << endl; cout << msg << endl; cout << "**************************" << endl; msg는 "로비에 입장했습니다." 문자열의 주소를 가지고 있는거니까 문자열을 출력하려면 cout << *msg << endl;로 해야 맞는게 아닌가요...?? msg가 가지고 있는 주소값에 접근한 값을 출력하는거니까...? 이해했다고 생각했는데 바로 헷갈려버리네요ㅠㅠ
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
new[] 연산자
동적 할당으로 객체를 생성하는 경우에도 new[]는 잘 사용하지 않는 것이 일반적인가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
delete를 실행할 때 소멸자가 호출되는데에서
만약 애니메이션을 출력(펫이 우는 모습) 이후에 사라지게 하려면 소멸자에서 작업을 하면 되는건가요? (가능하다는 가정 하에) delete를 통해 소멸되는 행위가 소멸자의 후처리 영역인지 선처리 영역인지 헷갈립니다. 디스어셈블리를 열어봤을 때는 어렴풋이 소멸자가 다 끝나고 delete 되지 않을까 싶은 느낌만 있네요
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
const char * 자료형 값의 출력
const char * 변수도 포인터이므로 임의의 주소값이 들어있을 터인데 cout으로 출력 시 주소값이 아니라 문자열이 출력되는 이유가 궁금합니다.
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
함수 반환타입이 참조형인 경우?
해당 함수에서 만든 참조타입 변수를 반환하고 함수의 스택 프레임이 소멸하면서 반환받는 쪽에서 위험성은 없는지 궁금합니다. 포인터는 그냥 주소값이라 괜찮다고 해도 참조형은 그 변수 자체에 대한 것이기 때문에 어떤 일이 일어나는지 궁금합니다.
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
temp 변수가 생성된 이유가 무엇인가요?
함수의 시그니처에서 반환값이 ObjectInfo인 것을 보고 컴파일러가 미리 값을 받아오기 위해 마련한 메모리 공간이라고 이해해도 되는지 궁금합니다.
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
이번 강의에서
궁금한게 이번 강의에서보면 자식 클래스(knight)의 메모리는 Knight k; 이면 (주소)VFTable (주소)_hp (주소)_stemia 이렇게 되있잖아요 그러면 Player * player = &K; 는 *player는 VFTable인데 _hp에 접근 하려고 하면 *(player +4)로 접근 하는거 같더라구요(제가 어샘블리를 제대로 해석 한것인지는 모르겠습니다.) 사실 player는 knight의 시작주소를 가리키고 있는데 _stemia에 접근 못하는 이유는 player은 Player 포인터고 그렇기 때문에 컴파일러에서 Player의 맴버 변수 까지만 접근 가능하게 하는건가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
코딩 스타일 및 포인터에 관한 질문
1. 문자열 길이 계산 함수 int GetStringLength(char* str) { int lengthCount = 0; bool endOfStr = false; while (endOfStr == false) { endOfStr = *(str + lengthCount++) == '\0' ? true : false; } return --lengthCount; } 코드 길이를 최대한 줄여보고 싶어서 전위, 후위 연산자를 이렇게 사용을 해봤는데 이런 방식이 일반적인 회사에서 사용하기에 적절한 방식일까요? 2. 포인터를 매개 변수로 전달할 때 void StringConcatenation(char* dest, char* source, char joinWord) { int endOfDest = 0; while (dest[endOfDest] != '\0') { endOfDest++; } dest[endOfDest++] = joinWord; StringCopy((dest + endOfDest), source); } 기존 구현한 함수를 재사용하기 위해 포인터의 위치를 의도적으로 이동시킨 상태로 전달해주었고 결과는 의도한 대로 나왔습니다. 이러한 방식 또한 코딩 스타일로서의 문제가 없는지, 또는 이렇게 사용할 경우 발생할 수 있는 위험성 같은 것이 있는지 궁금합니다!
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
const를 사용하여 변경 불가능한 상태가 되면
메모리나 cpu 등 컴퓨터 용량을 좀 더 효율적으로 사용할 여지가 있나요? 공부를 하다보니 불가능 하다 = 기능 구현이 되어있지 않다. => 추가적인 기능 구현을 위해 투자하지 않았다. 라는 생각이 문득 들어서 질문해봅니다.
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
4번문제는 _hp의 자료형을 바꿔주는건 잘못된거죠?
디버깅하면서 봤을떄 int의 한도치가 넘어가서 생기는 오류라고 생각해서저는 int를 long long 으로 바꿔주었는데그렇게되면 메모리가 커지다 보니 좋지 않은 방법이겠지요?
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
부동 소수점의 지수부 표현 방법에 대하여
지수부는 unsigned라고 말씀해주셨는데요, 음수 지수는 사용되지 않는건가요??
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
Switch-case문에서 break가 없을 경우가 이해가지 않습니다.
좋은 강의 잘듣고있습니다! 다름이 아니라 이해가 안가는 부분이 있어서 질문 드립니다. 분기문 강의 25분쯤입니다. input이 ROCK인 상황에서 switch case를 사진과 같이 작성했을 시, 첫 case ROCK문에 break를 걸지 않았다 해도, 그다음 실행되는 코드는 case PAPER: 이라고 생각해서, 어짜피 "보를 냈습니다" 가 출력이 되지 않을 것 같은데, 왜 출력이 되는지 궁금합니다
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
강의 관련 질문드립니다.
안녕하세요! 현재 수강중인 수강생입니다. 군에서 하루 두세시간씩 공부하면서 강의 진행중인데, 내년까지 강의를 통해 포트폴리오를 만들 정도의 퀄리티가 나올지 너무 걱정됩니다. 강의 중 특별히 더 신경써야 하는 파트가 있을까요 ?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
참조자와 메모리
예를들어 int number = 1; int* Iptr = &number; int& Iref = number; 라고하면 메모리에는 대략적으로 저렇게 잡혀 있자나요?? 0000011C 0000011A (int& Iref = number;) 0000011B 0000011A (int* Iptr = &number;) 0000011A 00000001 (int number = 1;) 근데 제가 알기로는 주소 연산자에서 &number =0000011A &Iptr = 0000011B 로 알고 있는데 참조자는 &Iref = 0000011C 가아닌 number의 또다른 이름 이기때문에 0000011A 로나오는 것이 맞나요?? 그리고 그 역활은 컴파일러가 하는 것이 맞나요?? 그렇다면 0000011C 접근하는 방법은 무엇인가요??? 예전에는 그러려니 했는데 어셈블리랑 같이 보니까 궁금하네요^^