월 22,000원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
const가 메모리에 할당되지 않는다는게
const를 지역변수로 선언하면 stack영역에 할당된다는건 이해했습니다. 근데 전역변수로 사용할 경우에는 메모리가 어디에 할당될지는 컴파일러의 마음이라고 설명해주시고 메모리에 할당되지 않았다는걸 보여주셨는데 이게 궁금해서 인터넷에 찾아보니 다들 전역const에 경우에는 .rodata에 메모리가 할당된다고 설명을 하더라구요... #define의 경우에는 메모리를 쓰지않는다고하고... 약간좀 혼란이오는데 메모리에 할당될지 말지는 랜덤이라는게 맞는 말인가요?
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
연습문제(문자열)#2 질문있습니다.
#include <iostream> using namespace std; //문제2 문자열 복사 함수 char* StrCpy(char* dest, char* src) { int i = 0; while (src[i] != '\0') { dest[i] = src[i]; i++; } dest[i] = '\0'; return dest; } int main() { const int BUF_SIZE = 100; char a[BUF_SIZE] = "Hello"; char b[BUF_SIZE] = "World"; StrCpy(b, a); cout << b << endl; } 안녕하세요 강사님 최근 연습문제 풀다가 질문있어서 올리게 되었는데요, 3가지 질문드립니다. 질문1 함수 char* StrCpy(char* dest, char* src) 부분에서 함수 자료형이 char*이면 return을 받을때 &rest가 아닌 그냥 rest받는 이유를 알려주세요. 혼자 계속 고민하다가 도저히 모르겠어요 ㅠㅠ 질문2 함수 char* StrCpy(char* dest, char* src)에서 매개변수가 char* 되어있으면 StrCpy(b, a)가 아닌 StrCpy(&b, &a)로 받아야되는 것아닌가요? 질문3 마지막으로 cout << b << endl;에서 b를 출력하면 b[0]만 출력하는줄 알았는데 나머지 배열 전체값이 출력되는 원리 좀 알려주세요. 끝으로 제가 강사님 강의 듣고 많은 도움이 되고 있는데 c++은 사실 이번이 처음이어서 그런지 많은 어려움이 있습니다. 특히 포인터로 들어가면서 더더욱 힘들더라구요ㅜㅜ 포인터 부분 어떻게 극복하면 좋은지 약간의 조언좀 해주시면 감사하겠습니다.
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
lambda강의를 듣고 코딩문제에서 구현해봤는데 잘 안되네요 ㅠㅠ
struct isSpecial { bool operator()(char c) { return !((c >= 48 && c <= 57) || (c >= 97 && c <= 122) || c == '-' || c == '_' || c == '.'); } }; // auto isSpecial = [](char c) {return ((c >= 48 && c <= 57)|| (c >= 97 && c <= 122) || c == '-' || c == '_' || c == '.'); }; new_id.erase(remove_if(new_id.begin(), new_id.end(), isSpecial()), new_id.end()); new_id는 string입니다.. struct isSpecial로 remove_if에 전달하면 실행되는데 아래 lambda문법으로 isSpecial을 전달하면 "E1767 지정된 인수 목록으로 함수 "lambda []bool (char c)->bool"을(를) 호출할 수 없습니다." 라며 오류가 발생합니다 ㅠㅠ 왜이러는건가요
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
코딩테스트 준비는 언제부터 시작하면 좋을까요?
안녕하세요 루키스님 현재 Part1의 C++ 강의를 쭉 듣고있습니다 기업 공고를 찾아보니 코딩테스트를 요구하는 곳도 다수 존재하더군요 그래서 강의와 병행하며 백준이나 프로그래머스에서 코딩테스트 준비까지 같이하려는데 자료구조 알고리즘 강의까지 전부 학습한 후부터 준비하는 것이 좋을까요?
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
C++ 책
안녕하세요 루키스님 예전에 강의를 신청해놓고 이제서야 시간이 나서 들으려합니다.. 제가 C++ 책이 하나도 없어서 하나 구매해서 참고하면서 강의를 듣고싶은데요.. 어떤책을 살지 고민하다가 혹시 추천해주실만한 책이 있으신지해서 여쭤봅니다 .강의내용과 상관없는 질문이라 죄송합니다..
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
*ptr 부분 크래쉬 이유
*ptr이 매개변수로 받을때부터 TestPtr에서 &a를 받았는데 어째서 그값이 a[100] 주소를 가르키고있고 그 상태에서*ptr=0x12341234를 넣었을떄 어떻게 크래쉬가 나는지 이해가 되지않아 이렇게 질문을드립니다
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
연산자 오버로딩 ++ 질문입니다.
Iterator& operator++() { _ptr++; return *this; } Iterator operator++(int) { Iterator temp = *this; _ptr++; return temp; } 넘겨주는 부분이 이해가 안돼서 질문드립니다. 전위형의 경우 return *this를 반환하고 후위형의경우에 temp에다가 *this를 넣은후 temp를 반환하는데 결국 둘의 반환타입이 같은거 아닌가요??.. 근데 왜 전위형의경우에는 반환값이 Iterator의 참조값이고 후위형의 경우는 Iterator인가요?..
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
14:25 스택메모리 사용영역설정 질문 있습니다
위 체크한 부분에서 스택에 범위를 설정한다 하셨는데 이전 함수ebp를 푸쉬한다음 ebp에 esp를 넣어놓고, 매개변수와 리턴할주소값을 일단 넣은 다음 공간을 확보하는건가요? 순서가 1.이전함수bp값을 저장 2.ebp값을esp로 설정 3.esp에 사용할범위설정 맞나요? 정확히 어떤식으로 영역설정이 되는건가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
스마트 포인터는 언제 사용해야하나요?
스마트 포인터라는게 있다라는 점은 알겠는데, 그럼 언제 사용을 해야하나요? 필요에 따라 사용을 해야하는 것인지 아니면 항상 사용을 해야하는 것인지 궁금합니다.
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
콜백함수에 관해서
루키즈님 안녕하세요. 콜백함수 강의를 보고 제가 따로 구현을 해보았는데요. 이것도 콜백함수 인지 여쭤보고 싶어서 질문 남깁니다. 앞서서 이번에 게임 회사 취업되서 일단 감사의 말씀 먼저 올립니다! ㅎㅎ 콜백함수 정의가 함수의 인자로 함수포인터로 사용되어서 다른 함수나 모듈 에서 인자로 사용된 함수가 사용된다? 라는 것을 의미하는 것 같은데요? 제가 억지로 만든 코드인데요. 이것도 콜백 함수라고 할수 있지 않을까요 ?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
포인터 관련 질문입니다.
강의를 듣던 도중(캐스팅 4총사) 궁금한 점이 생겨서 질문드립니다. class Player와 그 자식 class Knight가 있는데 Player* p = new Knight(); 에서 p의 타입인 Player*가 무슨 의미를 띠는 지 모르겠습니다. 이렇게 되면 p에 Player를 넣던 Knight를 넣던 Archer를 넣던 상관없는거 아닌가요?.. 또 void*로 선언해준거랑 뭐가다른지 모르겠습니다..
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
참조자 리턴 질문입니다.
Position& operator++() { _x++; _y++; return *this; } 질문1) 제가 이해하기로는 Position&이 리턴이면 resturn *this에서 *this가 실제로 존재하는 메모리상에서 꺼내와서 쇽 넘기는거고 Position으로 리턴하면 실제값을 복사해놓고 복사된 값을 넘겨주는거다 라고 생각이 드는데 여기서 리턴타입이Position& 일때와 Position일때 와의 차이가 성능? 말고 또 존재하는게있나요? 자기자신 참조라는게 어감때문인지 Position&과 Position의 디테일한 차이를 잘 모르겠습니다. 질문2) 연산자 오버로딩 중에 무조건 리턴타입이 참조자리턴이어야하는 경우가 있나요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
타입변환#2 질문있습니다.
// [2] 참조 타입 변환 // 특징) 비트열을 재구성하지 않고, '관점'만 바꾸는 것 // 거의 쓸일은 없지만, 포인터 타입 변환도 '참조 타입 변환' 동일한 룰을 따르니까 1석2조로 공부하자 { int a = 123456789; // 2의 보수 float b = (float&)a; // 부동소수점(지수 + 유효숫자) cout << b << endl; } 강의중 나왔던 코드입니다. float b = (float&)a; 의 문법이 이해가 잘 안됩니다..ㅠㅠ float타입의 b변수에 왜 float& (<<< 저는 이걸 주소라고 생각하고있습니다.) 형변환을 해서 넘기는지 모르겠습니다. a를 float주소형태???? 로 변환?? 이게 잘 이해가안됩니다.. 저렇게 해서 넘기면 b에는 포인터처럼 주소가 들어있어야 하는게 아닌가요?..
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
객체지향 마무리 질문있습니다.
class Marine { public: // 특정 마린 객체에 종속적 int _hp; void TakeDamage(int damage) { _hp -= damage; } static void SetAttack() { s_attack = 100; } // 특정 마린 객체와 무관 // 마린이라는 '클래스' 자체와 연관 static int s_attack; // 설게도 상으로만 존재 }; int GenerateId() { // 생명주기 : 프로그램 시작/종료 (메모리에 항상 올라가 있음) // 가시범위 : // 정적 지역 객체 static int s_id = 1; return s_id++; } 강의에서 나오는 Marine클래스와 GenerateId()함수입니다. 강의 중 GenerateId()함수를 여러번 부를 경우 정적 지역 객체인 s_id가 계속해서 1로 초기화 되는 것이 아닌, 처음 함수를 부를 때만 1으로 초기화 되고 그 다음부터는 ++만 연산해서 1, 2, 3, ... 과같이 s_id가 계속해서 증가하는 모습을 보였습니다. 그래서 저는 Marine클래스의 SetAttack()도 처음에만 100으로 세팅해주는것인가? 라는 생각이 들어 Marine::SetAttack(); cout << m1.s_attack << endl; Marine::s_attack = 7; cout << m1.s_attack << endl; Marine::SetAttack(); cout << m1.s_attack << endl; 이렇게 실행해 보았으나, 출력이 100 7 100으로 다시 초기화가 된 것을 확인하였습니다. 왜 SetAttack()은 부를때마다 초기화가 진행되고 GenerateId()는 그렇지 않은 것인가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
이중포인터 질문있습니다.
안녕하세요 강사님. 질문있습니다. 1번 질문) char* a = "abc"; cout << a; // 출력 값 : abc a는 문자열 "abc"의 주소값을 받는 ptr로 이해하고 있습니다만, 위와 같이 코딩 후 출력하면 주소값이 아닌 문자열이 출력되는 것을 확인할 수 있었습니다. 이 부분은 다른 분의 질문을 통해 cout이 문자열의 경우 주소가 아닌 문자를 NULL 부분까지 쭉 출력한다고 이해했습니다. 제가 제대로 이해한 것이 맞는 것인지 궁금합니다. 분명 주소가 나와야하는데, 값이 나오니 기존에 공부했던 개념까지 흔들려서 다시 찾아보는 어려움이 있었습니다... 2번 질문) 추가) 2번 질문은 함수의 매개변수로 넘겨줄 때 사용하는 것으로 강의 다시 보면서 이해했습니다. 감사합니다. const char* b = "aaa"; b = "bbb"; 위와 같은 상황에서는 b에 문자열 aaa의 주소값을 저장하고, char을 상수화시켰기 때문에 직접적으로 값을 변경하지는 못하고, bbb의 주소값을 b에 넣어줌으로써 메모리 주소값을 변경한 것으로 이해했습니다. const char* b = "aaa"; const char** c = &b; *c = "bbb"; 문제는 위와 같은 상황인데, 이것 또한 결국엔 b에 저장되어있는 aaa의 주소값을 bbb의 주소값으로 변경해주것이지, b의 char을 직접적으로 변경해준 것도 아닌데 굳이 이중포인터를 쓰는 이유가 궁금합니다.
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
글로벌 선언? 전역선언? 을 하니까 함수 포인터의 fn 까지는 잘 되는데 그이후가 안되네요
int sub(int a, int b) { return a + b; } typedef int(Fanc_sub)(int, int); Fanc_sub* fn; fn = sub; int main() { int c = fn(1, 2); cout << c << endl; return 0; } mine 실행부분 안쪽에 넣어놓지 않고 그 외부에 선언을 하니까 저 빨간부분이 작동을 하지 않는데 왜 그러는걸까요 ㅠㅠ 느낌상 메인함수안에서 무언가가 작동해야 되는데 스택 메모리 관련된 부분인가요? 딱 저부분에만 빨간줄이 처지고 형식 지정지가 없다고 나옵니다 뭣때문에 저부분에서는 안되는걸까요 ㅠㅠ
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
덱에서 순차접근은 벡터보다 느린가요?
STL 덱에서 모든 원소를 접근할때 벡터보다 더 느린가요? 벡터는 연속된 메모리라서 괜찮지만, 덱은 모든 데이터가 연속된 메모리에 저장되지 않아서 순차적으로 모든 데이터를 접근할때 메모리상 점프해야하는일이 생길것 같아서 이 부분 때문에 매우 많은 데이터를 모두 순차접근해야하는 경우에 벡터보다 성능이 훨씬 떨어질 수 있다고 이해해도 괜찮은건가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
루키스님! 커리큘럼 관련 질문이 있어요
자료구조 알고리즘 배운 뒤 Direct를 배우고 싶어서 그러는데 Part1 c++ 듣고 Part3 자료구조 알고리즘 듣고 Part2 Direct 들어도 괜찮을까요?! 답변 기다리고 있겠습니다 :) !
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
vector 순회 vs map 순회
안녕하세요. 루키스님 STL 강의를 보다가 순회하는 속도에 대해서 궁금한 점이 있어서 질문을 남깁니다. 1만개의 데이터가 있을 때 vector로 순회하는 것보다 map으로 순회하는 것이 느리다고 하셨는데 그 이유가 무엇인가요? vector 같은 경우 iterator를 직접 사용하지 않고 바로 인덱스로 순회할 수 있고 map은 iterator를 한칸씩 증가하면서 순회해야하기 때문인 것인가요? 혹은 vector는 메모리가 연속되어 있기 때문에 템퍼럴 로컬리티와 스페이셜 로컬리티 특성으로 인해 캐시히트가 잘 일어나게 되고 map은 메모리가 연속되어 있지 않기 때문에 반대로 캐시 미쓰가 많이 일어나서 그런 것인가요?? list또한 궁금합니다. 나머지 2개의 컨테이너와 비교했을 때 순회하는 속도가 어떤지도 궁금합니다. vector list map을 for문으로 순회하는 것에 대해서 무엇이 빠르고 느린지 이유를 알고 싶습니다!
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
list 노드의 next 와 previous 질문입니다.
선생님과 같이 메모리를 보면서 실습중에 궁금증이 하나 생겼는데 저 게지금 &itBegin 이렇게쳐서 나온값중에 세번째값 을 타고 들어간 상황입니다. 저기서 첫번째는 next 두번째는 previous 세번째가 data라고 하셨는데 실제로 저 첫번째 주소를 타고가면 두번째 노드가 나오고 다음값에서 previous를 타고 가면 다시 첫번째 노드가 나오더라구요 근데 첫번째 노드에도 previous쪽에 주소가 하나들어있는데 그걸 타고들어가면 뭐 이상한 값들이 있습니다. STL 에서 제공하는 list는 이중 연결 리스트라 맨뒤 노드로 가는건 아닌거같고 맨처음 값이면 previous가 필요가없을텐데? 어떤용도의 값인지 궁금합니다.