월 22,000원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
객체 생성
문득 임시 객체를 연습하다가 궁금한 점이 있어 질문드립니다. Q. 객체 생성을 위해서는 반드시 어떤 방법으로든 생성자가 호출되어야하나요?
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
강의 11:48 질문
강의 11:48에서 설명하신 내용에 관한 질문입니다.Knight(const Knight& knight) : Player(knight), _pet(knight._pet)Knight클래스의 복사 생성자를 정의하시면서 부모 클래스와 멤버 클래스의 기본 생성자가 아닌 복사 생성자를 호출하기 위해 초기화 리스트에 작성한 내용입니다. 여기서 Player(knight)가 성립하는 이유는Player(const Player& player) 복사 생성자: 자식->부모는 참조형에 대한 암시적 형 변환이 지원되기 때문에 가능한건가요?
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
학원1년 과정vs 루키스님 강의vs 둘다병행
안녕하세요!저는 비전공 독학으로 공부하고 있습니다어느덧 c++강의 완강에 도달하고 있는데요루키스님이 올려놓은 c++,그래픽스,서버,자료구조,추후 출시될 언리얼 포폴 과정을 전부 수료하게 되면 1년 학원 과정에서 배우는 것들을 학습하는 거랑 어떤차이점이있는지 궁금해요취업이 최종목표는 아니지만 제가 부족한 것들이 무엇인지 모르겠어서요 이강의들로 제가 복습하고 기초를 튼튼히 단련하면 채워질수있는 것인지 아니면 추가적으로 학원1년과정을 거치는 것이 많은 도움이 될지 조언좀 해주실수 있을까요?ㅠㅠ Tmi) 항상 스타트업준비로 힘드실텐데 시간내서 좋은강의 올려주셔서 감사합니다 ㅎㅎ소드아트온라인 같은 게임 꼭 만드셨으면 좋겠네요! 언젠간 루키스님처럼은 아니여도 a급인재가 되고싶어요 하하
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
형 변환 생성자와 캐스팅
#include <iostream> using namespace std; class Knight { public: Knight() { cout << "[알림] 기본 생성자 호출" << endl; this->hp = 10; this->mp = 10; } Knight(int hp) { cout << "[알림] 타입 변환 생성자 호출" << endl; this->hp += hp; } ~Knight() { cout << "[알림] 소멸자 호출" << endl; } void print() { cout << "[정보] HP: " << this->hp << " MP: " << this->mp << endl; } public: int hp; int mp; }; int main() { // 1. 기본 자료형 형 변환 연산자 사용 // a의 값에 대해 형 변환 '연산자'를 사용하여 형 변환된 결과를 반환 후 b에 할당 int a = 3; double b = (double)a; // 2. 객체형에 대한 형 변환 생성자 사용 // (1) 기본적인 타입 변환 연산자 호출 순서 : 타입->소멸 Knight k1(5); k1.print(); // (2) 묵시적 타입 변환 연산자 호출 순서 : 타입->소멸 Knight k2 = 10; k2.print(); // (3) 기본 생성자로 생성 후 묵시적 타입 변환 연산자 호출하여 재할당 순서 : 기본->타입->소멸->소멸 Knight k3; k3 = 10; k3.print(); return 0; }[1]의 상황 - 이해하였습니다.해당하는 기본 자료형의 경우 단항 연산자인 "형 변환 연산자"에 의해 연산된 결과가 반환되어 double형 변수 b에 정상 할당되었습니다.[2-1]의 상황 - 이해하였습니다.오버로딩된 기본 연산자 중 인수가 하나인 타입 변환 생성자가 자동으로 호출되어 객체가 생성되었습니다.[질문 항목]Q1.[2-2] [2-3]의 상황 - 헷갈립니다.묵시적으로 형 변환 타입 생성자가 호출되어 우항의 Knight(10)이 우선 동작하고 그 결과가 반환되어 k2에 할당되었다라고 생각하였는데 실제 어셈블리로 동작을 확인하니 예상했던 순서로 동작하지 않고 바로 타입 변환 연산자가 호출되어 [2-1]과 [2-2]는 완전히 같았습니다. 기본 자료형에 대한 casting 처럼 캐스팅이 먼저 동작되고 그 결과가 반환되어 좌항에 할당된다고 생각했습니다. 그런데 반환형이 없는 생성자인데 대입 연산자 기준 우측에서 사용될 수 있었던건 의미만 캐스팅일 뿐, 실제로는 형 변환 연산자의 호출의 다른 방법이기 때문인가요? (실제로는 타입 변환이 아닌 인수가 1개인 기본 생성자 호출인데 사용 방법이 마치 형 변환과 같아서 이름이 그렇게 붙은건가요?)복잡하게 생각하지 않는다면,타입 변환 생성자는 1) 그 자체로 생성자로 활용 2) 캐스팅의 두 가지 사용처가 있고 1), 2) 모두 내부적으로 같은 방식으로 동작함.이라고 이해해도 괜찮을까요? 바로 전에 작성한 질문은 생각을 제대로 정리하지 못해 글이 난해하여 다시 정리하여 올리게 되었습니다.좋은 강의 감사드립니다.정말 많이 배우고있고 큰 도움이 되고 있습니다.
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
섹션1 레지스터 기초
rbx -> 64 비트 == 8바이트 0x12345678 저장함eax -> 32비트 == 4바이트 0x1234 저장함ax -> 16비트 이고al -> ax의 하위 8비트 == 1바이트인데 0x00을 저장하면 0x1200가 아니고, 0x1230가 되야 하는거 아닌가요?
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
타입 변환 생성자에 대해
다른 분들 질문을 봐도 확실히 이해가 가지 않는 듯하여, 제가 이해한 것을 주석으로 작성했는데 맞는지 확인해 주시면 감사하겠습니다.항상 감사드립니다
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
deque강의에서 사이즈를 3으로 잡아뒀는데, 메모리에서는 4로 잡히는 이유가 뭘까요?
deque강의 12:14분경에 deque<int> dq(3,1)로 해서 사이즈를 3으로 잡아뒀는데, push_back을 했을 때 메모리에서 확인하면 4개로 확인이되고 그렇게 설명하셨는데, 왜 4개인지 알 수 있을까요?
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
변수와 레지스터 강의 17:15 질문
Q1.mov rax, [a]를 통해 변수 a의 값을 rax에 할당하였습니다.디버깅 모드-레지스터창에서는 rax의 값이 0x443333...으로 나와습니다. 메모리창의 a의 값은 0x11, 0x22, ... 의 순서인데 왜 뒤집어진건지 궁금합니다! Q2.Q1과 이어집니다만,a. 16진수 상수를 레지스터에 할당하고 레지스터창을 보면 입력한 값 그대로 들어가 있는 것을 확인하였습니다. b. 16진수 상수를 변수에 넣은 경우 메모리창을 보면 입력한 값의 순서가 뒤집어져있는 것 같습니다.어떤 원리가 있는건지 궁금합니다.ex) mov [a], byte 0xef mov [a], word 0xabcd예상 >> ab, cd, 22, 33, ...실제 >> cd, ab, 22, 33, ...이 저장 방식이 이해가 되지 않습니다...! 감사합니다.
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
동적 객체 생성 전에 클래스 포인터의 멤버함수 호출
class TestClass{public: void Init() { cout << "CTestClass::Init()" << endl; } int mmmi;};int main(){ TestClass* pi = nullptr; pi->Init(); // 정상 실행 pi->mmmi = 10; // 에러} 안녕하세요. 강의 잘 듣고 있습니다.위와 같은 경우에 객체가 생성되지 않은 상태에서 멤버변수에 접근 되지 않는 건 이해가 가는데 함수는 호출이 정상적으로 됩니다. 설명 좀 부탁드립니다.
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
포인터와 배열 기반 문자열과 둘의 차이에 대해
포인터와 배열 기반 문자열과 둘의 차이에 대해, 제가 이해한 것이 맞는지 확인 해 주실 수 있으신가요?항상 감사드립니다. [ 포인터 vs 배열 ]포인터를 이용한 문자열const char test1 = “Hello World”;*“Hello World”는 데이터 영역(.rodata)에 배열의 형태로 할당된다.포인터 test1은 원본 배열 첫 번째 요소인 ‘H’의 주소를 가진다..rodata에 존재하므로 문자열의 각 요소를 수정할 수 없다.배열을 이용한 문자열char test2[ ] = “Hello World”;미리 데이터 영역에 할당된 “Hello World”의 요소를 각각 복사하여 새로운 배열이 할당된다.배열 이름 test2는 복사된 배열 첫 번째 요소인 ‘H’의 주소를 가진다.복사된 배열이므로 문자열의 각 요소를 수정할 수 있다.결론, 포인터와 배열의 차이배열과 포인터는 본질적으로 다르다.배열의 이름이 포인터처럼 사용되지만, 포인터가 오직 어떠한 대상을 가리키는 고정 크기의 주소만 가지고 있는 반면, 배열은 이름이 포인터로 동작할 수 있을 뿐 본질은 변수의 모임이라는 여러 바구니로 이루어져 있기 때문이다.따라서 배열의 크기는 포인터와 달리 타입과 길이에 의해 달라진다.
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
문자열 char와 char* 관련 질문입니다.
안녕하세요 강의 듣는 도중 궁금한 점이 생겨서 질문 드립니다. int BUF_SIZE = 100;char a[BUF_SIZE] = "Hello"char b[BUF_SIZE] = "World"; 1.strcpy나 strcat 같은 함수를 보면 char가 char* 형태의 매개변수가 될 수 있는 이유가a가 배열이기 때문에 배열의 시작주소를 인자로 넘겨주기 때문에 가능한건가요? 2.char형 변수는 데이터가 배열에 저장이 되기 때문에 복사가 이루어지면 그만큼 데이터를 복사하게된다고 생각이드는데실무에서는 용량이나 트래픽을 아끼기위해서 char* 나 const char* 를 사용하는 편인가요??
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
선처리 영역의 구분을 어떻게 해야할까요?
c++ 초기화 리스트 수업입니다.사진의 어셈블리 코드를 보시면,call Inventory::Inventory가 생성자의 몸체부분과 같은 중괄호로 묶여있습니다. 그렇다면 Inventory() 생성자가 선처리 영역이 아닌 몸체 내에서 호출된다고 보는게 맞는걸까요? 물론 선생님이 강의시간에 Inventory() 생성자는 선처리 영역에서 기본적으로 한번 호출된다고 하셨기때문에, 만약에 같은 중괄호에 묶여있더라도 저걸 선처리 영역으로 본다면, 그냥 몸체에 있는 첫번째 코드 int a=3;이 실행되기 전까지의 모든 어셈블리 코드는 다 선처리 영역이다! 라고 보는것이 맞을까요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
sasm 오류
sasm 수업 아무리 다시 보고 따라 해도 처음부터 오류가 뜨는데 sasm으로 하는 수업 전부다 버리고 c++만 들어도 될까요? 11만 원 주고 강의 구매했는데 .. 그냥 버리기 너무 아까워요 ..
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
1-12 스택메모리 push함수
25분 쯤에 나오는 이전에 rax, rbx를 중요한 용도로 쓰고 있었을 때push rax를 하셨는데이미 중요한 용도로 rax를 쓰고 있는데 그걸 rax에 대입한다면 말이 안되고... push rax하면 rax에 쓰고 있던 중요한 값들이 어디에 저장되나요???
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
1-12. 스택 메모리 16분 주변에 나오는 "이전BP값"이 어디를 가리키는거에요??
아무리 봐도 모르겠어요
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
안녕하세요 루키스님 part1, part3
안녕하세요 루키스님비전공자이지만 루키스님의 강의 덕분에 많이 배우고 있습니다 질문이 있어서 올려요!저는 클라이언트 개발에도, 서버 개발에도 모두 관심이 있는데당장 취업이 급해서..!클라이언트 개발로 우선 취업하려는 생각입니다.part1 (c++) 과 part3 (자료구조알고리즘) 강의 를 듣고코딩테스트와 포트폴리오를 별도로 준비하면 충분할까요??윈도우api 와 다이렉트x는 아예 접해보지 않아서 시간이 정말 오래 걸릴 것 같아서요...!아니면 얼마 전에 올려주신 게임 프로그래머 입문 올인원이라도 들어야할까요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
게임 프로그래머 입문 올인원 vs c++ 언리얼
C++ 언리얼 part 1, 2수강하고 진행을 못하다가 지금 다시 하려고 보니 게임 프로그래머 입문 올인원 이 나왓던데 차이가 있는건가요? 아니면 1,2 햇으니 연재가 중단됫던데 part3,4를 마져 보는게 나을까요?아니면 UE5로 넘어가는게 나은가요?
- 미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
vetor구현 질문있습니다!
vetor를 구현하는 부분에서 질문 있습니다!*연산을 위해 아래와같이 구현하신걸 보고 이해가되지 않습니다..! for (auto i = v.begin(); i!=v.end(); ++i) { cout << *i << "\n"; } T& operator*() { return *_ptr}*연산을 통해 데이터를 꺼내오는 것이면 데이터의 복사값을 반환해주는게 아닌 어떻게 T& 주소값을 반환해주는 연산이 허용되는지 해당 문법이 잘 이해가 되지 않습니다..!
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
메모리 주소값 더하는게 이해가 안되요 ㅠㅠ
주소값이라는 개념은 이해가 됬는데요강의 변수와 레지스터 15분쯤 보면1바이트를 더했는데 왜0x403010에서 0x403011로 된건지 잘모르겠네요..저기 뒤에 숫자 1은 바이트가 아니라 1을 더한거아닌가요?
- 해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
list #2강의 18:48~ 중간 삽입/삭제와 임의접근의 모순
안녕하십니까 강사님 항상 고생하십니다.list에 대해서 복습을 하던 중 의문점이 생겨 질문 드립니다. 해당 강의의 중간 삽입/삭제와 임의접근의 모순에 대해선 내용을 이해 했습니다. 여기서 생기는 의문점이 그렇다면 remove()는 왜 구현해 놨을까? 입니다. remove()는 동작할 때 리스트항목을 모두 순회하여 해당 값을 지우는 걸로 알고 있습니다.이것 또한 지우는 것 자체는 빠르겠으나 그전에 하는 순회는 리스트의 크기가 커질수록 아주 느릴텐데, 그 위치를 기억하고 있던 것도 아니고 왜그런 remove()를 임의접근처럼 막아 놓지 않았는지 궁금합니다!