월 22,000원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
연산자 오버로딩 궁금한 부분이 있습니다.
강의 내용중 Knight에 연산자 오버로딩을 전역함수 버전으로 만드셔서동작하는 모습을 보여주셧는데 class Knight { public : // ... ostream& operator <<(ostream& os) { os << _hp; return os; } public: int _hp = 100; }; Knight 클래스 내에서 << 연산자 오버 로딩을 만들면 허용되는 변환이 아니라고 하는데 이유를 모르겠습니다.<< 연산자 오버 로딩은 전역함수로 밖에 선언이 안되는 건가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
커리큘럼 문의
안녕하세요. 수강 순서에 대해 문의 드릴 것이 있어 질문 드립니다. 퍼즐 게임을 만들면서 part1을 수강중입니다. part 1 -> 언리얼 입문 -> part 3 -> part 2 -> part 4 순으로 수강 하려고합니다. 수강 순서를 고민하던 중에 자료구조와 알고리즘을 part3에 배치 하신 이유가 궁금해서 질문 드립니다. 감사합니다.
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
상속 접근 지정자 질문드립니다
{} class SuperCar : private Car { public: void PushRemoteControl() {} } class TestSuperCar : private SuperCar {} int main() { TestSuperCar TSC; TSC.PushRemoteControl(); -----> Error } 위 코드의 main함수에서 TSC객체를 통해 PushRemoteControl을 접근할 수 없다고 강의중에 설명해주셨는데요 TestSuperCar 클래스가 SuperCar 클래스를 private로 상속받아도 지금 당장은 TSC객체를 통해 PushRemoteControl함수를 접근 할 수 있어야 하는게 아닌가요? private상속을 제대로 이해한게 맞다면 TestSuperCar를 상속받는 다음 클래스에서는 모든 접근 권한이 private이 되기 때문에 PushRemoteControl을 사용하지 못해야 할 것 같은데 그렇지 않은 이유가 뭔가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
RIP 레지스터
안녕하세요 다름이 아니라 rip 레지스터에 대해서 궁금한 게 있는데 rip 레지스터의 정의에 대해서 검색을 하니 1. 현재 수행 중인 명령의 주소를 가리키는 레지스터 2. 다음 수행 명령의 주소를 가리키는 레지스터로 나와있는데 2가지 의미가 동일한 의미인 것인가요? 아무리 생각해도 1번과 2번이 동일한 의미로 생각되지가 않습니다...
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
STL(list) 중간 삽입/삭제, 임의접근 질문
안녕하세요 선생님! 강의 잘 보고있습니다. 임의접근하고 중간 삽입/삭제가 데이터를 찾는 것은 똑같은 데 중간 삽입/삭제가 빠르다고 하신 이유가 데이터를 하나씩 찾는 과정은 임의접근의 과정이고 데이터를 삭제하고 next,prev 값만 바꿔주는 과정이 중간 삽입/삭제 과정이기 때문에 중간 삽입/삭제가 빠르다고 할 수 있는 건가요?
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
유효범위의 의미가
시간적인 의미인가요, 아니면 공간적인 의미인가요? 꿈이 유효한 동안에는 그 꿈을 유지시켜야 한다라는 항목에서는 시간적인 의미로 이해가 되었고 꿈에서도 또 꿈을 꿀 수 있다는 것을 고려해야 한다라는 항목에서는 공간적인 의미로 이해가 되어서요... p.s. 혹시 강의자료 중 ppt형식?으로 된 자료들도 강의자료에 올려주실 수 있으신지 여쭤보고 싶습니다
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
참조와 주소 전달의 크기 확인방법
struct StatInfo { int hp; int attack; int defence; }; int main() { StatInfo info; info.hp = 100; info.attack = 5; info.defence = 1; PrintInfoByRef(info); PrintInfoByPtr(&info); } void PrintInfoByRef(StatInfo &info) { cout << "size is :" << sizeof(info) << endl; } void PrintInfoByPtr(StatInfo* info) { cout << "size is :" << sizeof(info) << endl; } 주소 전달 방식과 참조 잔달방식 모두 8바이트(64bit환경) 크기만큼을 매개변수로 전달한다고 설명을 해주셔서 해당 부분을 위 코드를 사용해 확인을 해봤습니다. 그런데 주소 전달방식의 경우 8바이트가 맞게 나오지만 참조 전달방식의 경우 구조체의 크기(12바이트)로 확인이 됩니다. 그리고 각 함수들에 전달되는 매개변수의 메모리를 확인해봐도 주소 전달방식의 경우 구조체의 주소값을 가지고 있었지만 참조 전달방식의 경우 구조체의 첫번째 값(위 예제에서 int hp)을 가르키고 있었습니다. 어찌보면 당연하게도 값 전달방식과 동일하게 main함수에서 구조체 객체를 매개변수로 넘겨주기 때문에 그럴 수 있지만 강의에서 설명해주신 메모리의 크기가 확인이 안되니 납득이 어렵습니다. 강의에서 설명해주신 참조와 주소 전달의 크기가 8바이트라는것을 어떻게 확인할 수 있을까요? 참조와 주소 전달 방식 각각을 어셈블러를 까면서 확인하는 과정을 강의에 포함해 설명해주셔서 내부적으로 동작하는 방식을 눈으로는 알겠지만 각각의 크기를 눈으로 직접 확인하기 어려워 뭔가 상충되어 이해되는 느낌입니다....
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
게임회사 취업 & 자격증 관련
안녕하세요. 루키스님저는 올해 21살이고, 2023년 전문대 졸업 예정자입니다.아직 군대는 안 갔다 왔고, 학교에서 Java, C, Python 문법만 배운 정도입니다.지금 3월 개강 전에 루키스님 C++ Part 1을 보면서 공부 중인데 지금 공부하다가 3월에 정보처리산업기사라는 자격증을 교수님이 따라고 하시는데1. 정보처리산업기사 자격증을 따면 게임회사 취업할 때 유리한 게 있나요?2. 따는게 좋다면 편입을 해서 정보처리기사를 따는 게 더 좋을까요? 3. 루키스님이 올리신 C++ 강의 다 수강하고 잘 따라가면 취업을 했을 때 문제없을 실력이 될까요?( 졸업하고 학원을 다니는 게 더 좋은 방법일까요? )4. 너무 취업에만 신경 쓰는 것보다 혼자서 만들고 싶은 게임도 만들면서 실력을 쌓고 취업을 하는 게 더 좋은 방법일까요? 5. 군대를 안 가고 방위산업체를 전공 살려서 가고 싶은데 괜찮을까요? 제가 아직 어려서 어떻게 진로를 계획해야 할지 모르겠습니다. 조언 부탁드립니다. 영 관련 문의는 1:1 문의하기를 이용해주세요.
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
initializer_list를 인자로 받는 생성자의 활용
안녕하세요. 강의 잘 듣고 있습니다. 다름이 아니라 생성자의 인자로 initializer_list를 받아서 이 내용을 함수에서 사용하고 싶을 때에는 어떤 방식으로 접근을 해야 하는지 모르겠네요. 배열처럼 접근해도 안되고 포인터처럼 해도 안되더군요.
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
업/다운 캐스팅 추가 질문입니다.
enum _itemType을 통해서, 해당 객체가 원래 무슨 객체였는지 파악하는 형태로 다운캐스팅을 하는 내용과 dynamic_cast를 통해 기존 객체 형태를 자동으로 파악해서 바꾸게 하는 것이랑은 무슨 차이가 있는건가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
업캐스팅 후 다운캐스팅 과정 질문입니다.
안녕하세요 강사님! 자식에서 부모로 업캐스팅 한 경우, 자식 객체에서만 존재했던멤버 변수들은 그대로 남아있게 되는건가요?사실상 부모 포인터가 가리키게 되도록 캐스팅이 되니까, 부모가 가진 멤버 변수들 이외에 자식이 가지고 있던 주소들은다른 부분에서 쓰레기 값이라고 판단하고 마음대로 쓸 가능성이 있는건지 아닌 것인지 이 부분이 이해가 잘 안됩니다 ... 아직 헷갈리는 점이 많지만, 제가 이해한 바로는 ... ... 업캐스팅 된 이후에도 CRT 힙 매니저가 자식 객체를 가리키는 포인터 였을 때 가졌던 메모리 주소의 범위(?)를 기억하기 때문에, 부모 객체로 업캐스팅 된 이후에도 자식 객체가 사용했던 부분을 계속해서 기억하고 값을 유지하는 것일 것 같다는 생각이 듭니다... 혹시 이게 맞나요???
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
안녕하세요 질문이있습니다
연산자 오버로딩 전역함수 버전에서, ostream& operator<<(ostream& os, const Knight& k) { os << k._hp; return os; } 여기서 인자를 const Knight& k로 하면되고,const Knight* k로 하면 안되던데, &, * 둘다 주소값인데 왜 다른건가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
6분대 참조타입 변환 궁금한 부분이있습니다.
강의 정말 잘 보고있습니다. 6분대 참조 타입 변환에서 궁금 한 부분이 한가지 있습니다. { int a = 123456789; // 2의 보수로 데이터 저장 float b = (float&)a; // 부동소수점(지수 + 유효숫자) cout << b << endl; } 위에 코드를 설명하시면서 int a 를 참조 타입 변환을 통해float b에 넣으신다고 설명하시는데 참조 타입 변환을 한다면받는쪽에 타입도 float이 아니라 float&가 아니여야 하는지 궁금합니다저런식으로 하면 참조 타입으로 받는게 아니라 참조 타입으로 변환 후 값 형식으로 float b에 넣어져서 서로 참조관계가아니지 않은가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
vector 질문
1. vector는 힙메모리에 할당되는 동적'배열'이고, 배열이라고 한다면 'vector의 이름은 스택메모리에 할당이 되고, 힙메모리에 할당되어 있는 원소 집합의 첫번째를 가리키는것(주소)'으로 이해했는데요. 제가 이해한것이 맞나요? 2. 그리고 벡터를 class의 멤버 배열로 만들어 주려면 어느방식으로 만들어 주어야 효율적인가요? 예를들어 배열같은 경우는 멤버로 int *arr을 가지고 생성자에서 arr = new int[5]; 이런식으로 만들어 주면 class는 주소값만 가지니 그냥 int arr[5]를 가지는것보다 스택 메모리에 할당되는 용량이 효율적이다(?) 라고 생각 하고있었는데, 벡터는 위처럼 하려면 어떻게 해야하나요? 원소들은 힙메모리에 할당되니 그냥 vector<int> v를 멤버로 가지고 쓰면 되나요? 이해도가 아직 낮아 횡설수설한점 죄송합니다.
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
this와 *this
안녕하세요 강의를 거의 다 듣다가 헷갈리는 개념이 있어서 복습중입니다. this와 *this에 대해서 잘 이해가 안되는 부분이 있어서 질문 드립니다. 아래와 같이 예시 클래스를 만들어 봤을 때 (멤버변수들은 제가 메모리에서 쉽게 찾아보려고 연속되게 넣은거고 의미 없습니다) class Simple { public: Simple& operator=(const Simple& rhs) { if (this == &rhs) return *this; } private: int mNum = 1; int mNum2 = 2; int mNum3 = 3; int mNum4 = 4; int mNum5 = 5; }; 궁금한 점은 *this는 객체 자신이다 라는게 과연 정확히 뭘까가 의문입니다. this는 자신이 속한 객체의 포인터인것은 이해가 가지만 *this 객체를 자신을 넘긴다는게 어떻게 가능한지 어떤 의미인지 의문입니다. 시작주소 + 어떠한 객체에 대한 헤더정보가 넘어가는것인가요 ? 제가 헷갈리는 이유는 예를 들어서 int num = 3; int* ptr = # cout << *ptr << endl; int arr[10] = { 0 }; int* arrptr = arr; cout << *arrptr << endl; 변수와 배열에 대해서 포인터를 만들었을 때 여기서 *ptr은 값 3이고, *arrptr은 첫번째 원소의 값 0이지 int arr[10]이거나 arr의 첫번째 원소의 주소가 아니기 때문에 *this가 객체 자신을 넘긴다 ?라는게 어떤 의미일지 이해가 잘 안갑니다. 결국 return 값으로 넘길수 있는것은 뭔가 한개일테고 데이터멤버 첫번째가 값이 아니면 시작주소 아닐까 싶은데. 만약에 단순히 시작주소라면 this ==&rhs 이 문장은 *this == &rhs로 바꿔도 똑같을테고요.. 결론적으로 질문은 *this가 객체 자신을 가리킨다는것이 어떤 의미인지 ?? 입니다. 객체는 일대일 대응이 안되다보니 가리킨다 라는 개념이 안 와닿습니다. 시작주소라고 하면 ? 그냥 포인터랑 다른점이 없는거 같구요. 뭔가 헤더 정보를 가지고 있는것인가요. + 구조체로 테스트 해보려고하면 C++ 이러한 피연산자와 일치하는 연산자가 없습니다. 피연산자 형식이 std::ostream << myStruct입니다. 아예 되지가 않습니다. 조사식으로 *strptr == my인 것은 확인했습니다. 여전히 어떻게 가능한지? 잘 이해는 안되네요 ㅠ struct myStruct my; struct myStruct* strptr = &my; cout << *strptr << endl;
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
static 관련 질문이있습니다!
- 항상 좋은 강의 감사합니다. static질문이 있습니다. class Marine { public: //이 상태면 에러가 발생하는데, static int s_attack //전역으로 빼고 초기화를 해주면 에러가 발생하지 않습니다. } 왜 그런건지 궁금합니다. 따로 클래스 내부에서 static 변수를 초기화할려고 해도 에러가 발생하더라구요 무조건 클래스 밖에서 값 할당을 해주어야하나요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
다른함수에 vector 전달
안녕하세요. vector를 다른함수에 iterator를 사용해 매개변수로 전달하려고 하려고 합니다. 여기서 vector의 size는 it에 없고(v.size()처럼 it.size()를 사용햅 보려 했는데 안되더라고요) 또 다른 매개변수로 전달을 해주어야 하나요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
전처리기 사용 질문드립니다
강의중에 전처리기가 enum과 const int의 다음 순위로 고려된다고 설명해주셨는데요 예전 open source들을 보면서 전처리기로 상수값을 지정해서 사용한것을 빈번하게 본 경험이 있습니다. enum과 const int대신 전처리기를 사용하면 어떠한점이 불리한지(memory, 코드 유지보수 등등.) 그리고 어떤 상황에서 전처리기를 꼭 써야하는지 use case를 알려주시면 충분히 이해하는데 도움이 될 것 같습니다.
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
상수 참조 매개변수
template<typename T> class Node { public: Node() : _next(nullptr), _prev(nullptr), _data(T()) { } Node(const T& value) : _next(nullptr), _prev(nullptr), _data(value) { } public: Node* _next; Node* _prev; T _data; }; STL 리스트를 강좌를 듣다가 궁금한 점이 있어서 연속 질문 드립니다. 생성자에서 왜 cosnt T& value로 매개변수로 사용하는지 .. 잘 이해가 안갑니다. 참조변수를 받으려면 멤버변수가 T* _data로 포인터형이어야 되는것 아닌가 생각이 드는데 제가 뭘 잘못 알고 있는것인지 궁금합니다.
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
구구단
mov rax,1 mov rbx,0 mov rdx,9 mov rcx,9 GU1: inc al GU2: inc bl mul bl PRINT_DEC 1,ax NEWLINE cmp bl , 9 je GU1 jne GU2 cmp al , 9 jne GU1 xor rax, rax ret 곱셈 결과가 ax 레지스터에 저장되서 그거 때문에 그런거 같은데