안녕하세요, 좋은 강의 해주셔서 감사합니다. 질문드리고 싶은 것이 있는데, 예를 들어 int nothing(int x = 1, int y=2, int z=3);같은 함수가 정의되어 있을 때, x와 z는 디폴트 값을 사용하고 y만 다른 값으로 변경한 함수를 활용하고 싶으면 어떻게 하여야 하나요? python의 경우 nothing(y = 3)같은 식으로 활용이 가능했는데 c++은 아닌 것 같아서 질문 드립니다.
안녕하세요, Cents 클래스와 Dollar클래스를 이용하여 Dollar -> cents로 변환을 하고있는데, 메인함수에서 Cents cents = dol; 이 부분이 잘 이해가 가지 않습니다. 제가 이해한 프로세스가 1 .Dollar dol(3); 으로 선언 2. Dollar 클래스 안에 operator Cents()로 Cents로 형변환 오버로딩이 실행되서 dol(3)의 타입이 Cents가 됨. 3. 따라서, 메인함수의 cents객체에 대입 가능 (Cents가 사용자 정의 타입이므로) 제가 이해한게 맞나요..?
void printElement(int &arr[4]) 라고 입력을 했을때 오류가 생깁니다..... 반면에 강의처럼 void printElement(int (&arr)[4]) 라고 입력을 하면 오류가 생기지 않는데... 왜 그런 걸까요? 저 괄호를 굉장히 의도하고 쓰신거 같은데 딱히 설명을 안되어 있네요.
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
typedef를 사용해서 Iterator<T> iterator를 선언하는 부분에서 제대로 이해하기 어려운것 같아서 질문남깁니다. typedef를 선언했을때, main함수의 for문안에서 Vector<int>::iterator 했을때 자동적으로 iterator<T> 타입을 이용한다는 부분이 와닿지 않습니다. 좀더 구체적인 설명 조금 부탁드려도 될까요? 왜 저것을 사용했을때 Vector<int>::iterator 가 문법적으로 문제가 없는지 잘 모르겠습니다. 클래스명::을 사용하는 문법은 어떤 상황에서 사용하는건가요? std:: 라는것처럼 네임스페이스 부분으로 이해한 경우는 있는데, 클래스명으로 ::으로 했을때는 어떤 경우에서 사용하는지 헷갈리는것 같습니다. 추가 보충설명 해주시면 정말 감사하겠습니다.
int dosomting(int x) { return ++x; } int dosomting1(int x) { cout << ++x << endl; } int main() { int x = 4; cout << dosomting(x) << endl; //5 dosomting1(x); //5 cout << x << endl; //4 } 함수에 매개변수를 넣게 되면 변수가 복사가 되어서 값을 바꾸어도 본래의 값에는 영향을 미치지 않는다는 것을 알고 있습니다. 하지만 출력시켰을 때가 조금 헷갈립니다. 출력을 하게 되었을 때는 값이 바뀌어서 나왔습니다. main의 x와 다른것인것인 return값이 나오는 것같은데 main의 x와는 관련이 없는것인가요? dosomting과 dosomting1이 작동하는 방식이 같은 것인가요?
설명하실 때, resource의 copy연산자로 가는게 아니고, 거기서 그냥 포인터만 복사한다고 하셨습니다. 근데 이 경우에 파라미터 안에 R-Value가 들어오는 경우에는 shallow copy를 하기 위해 AutoPtr의 operator로 가는 것이고, L-Value가 들어오는 경우 deep copy를 하기 위해 resource의 copy operator로 간다고 생각하는게 맞나요? 혹시, AutoPtr에서 그냥 shallow, deep copy를 구현할 수 있는 코드를 짜면, Resource에서는 굳이 copy constructor나 operator를 넣지 않아도 되는지가 의문입니다.(AutoPtr<Resource>를 이용할 때) 그리고 AutoPtr<Resource> 이걸 어떻게 해석해야 하는지가 너무 헷갈리는데 정리해주실 수 있을까요?ㅜ 예전 강의 보면 vector<int>나 array<int>와 같이 해석하려는데, 여기서는 AutoPtr과 Resource가 둘다 class라서 해석하는데 어려움이 있는 것 같습니다.
for문 예제를 보면 for (int count = 0; count < 10; ++count) 에서 증감연산자 ++가 count앞에 오는걸 알 수 있는데요, 이 for문은 for (int count = 0; count < 10; count++) 로 바꾸어도 같은 결과가 출력이 되는것 같은데 ++count를 할때와 count++를 할때의 차이점이 있을까요?
8:10 에서 b의 포인터를 내부적으로 a 포인터로 바꿔서 print()를 호출한다고 하셨는데, ref의 자료형은 A지만 A의 getThis() 는 virtual 이므로 B의 포인터가 반환되었고, B의 print()를 호출하려 했지만 A의 print()가 virtual 이 아니라서 B 대신 A의 print()가 호출된 게 맞나요?
extern 은 다른 소스파일의 변수를 공유한다는 의미로 사용한다고 알고 있습니다. (a.cpp와 b.cpp 소스 파일이 있을 때, a.cpp에는 int num=123; , b.cpp에는 extern int num; 와 같은 식으로) 그런데 강의 34:00 에 보면 test.cpp에서 extern int a=123;로 초기화를 한 후 main.cpp에서 extern int a; 를 작성하시던데 두 cpp 파일에서 변수 a에 모두 extern을 사용하는 이유를 알고싶습니다.
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
맥북에서도 c++을 쓸 일이 있어서 vscode를 깔고 파일을 다운받아 cpp_study 파일에서 빌드를 실행했는데 사진과 같은 에러가 발생하네요 ㅠㅠ 구글링을 해봐도 vscode가 비주얼 스튜디오랑은 많이 다른것 같아서 설정을 어찌 바꿔야 할 지 모르겠는데 혹시 알고계신다면 알려주시면 감사하겠습니다