월 24,200원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결홍정모의 따라하며 배우는 C++
재귀함수 디버깅중 함수에 들어가고 count에 1값이 들어가는 이유
값이 1 이들어가고 그다음에 5값이 들어가는 이유가 무엇때문일까요??
- 해결됨홍정모의 따라하며 배우는 C++
친구 클래스를 선언할 때, 꼭 전방선언이 필요한가요?
#include <iostream> using namespace std; // class B; -> 반드시 필요한가? class A { private: int num1 = 10; friend class B; }; class B { private: int num2 = 5; public: void print(A& a) { cout << a.num1 << endl; } }; int main() { A a; B b; b.print(a); } 강의 7분 경에, friend class B;를 선언하면서 "forward declaration을 피할 수 없는 상태다"라고 하셨는데, 위 코드를 실행해보면 오류가 발생하질 않아요. 제가 보기에도 처음에 클래스 A에서는 클래스 B를 알 방법이 없는 것 같은데..
- 미해결홍정모의 따라하며 배우는 C++
visual studio code
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의에서 사용하고 있는 visual studio code 와 지금 버전이 조금 다른데 지금 버전 사용법이 따로 있을까요?맥북 m1 사용중입니다
- 미해결홍정모의 따라하며 배우는 C++
@26:20 static 관련 질문
@26:20 에 "일단 이 static 은 문법상 이 전역변수가 다른 cpp 파일에서 사용될 수 없도록 막아주는 역할을 해요" 의 의미가 링킹시, namespace 혹은 class 내부에 static 이 정의 되어있지 않으면 다른 cpp 파일에서 접근할수 없기 때문인게 맞을까요? 접근 제한자의 느낌은 아닌것같고, extern variable 과 비교하기 위해서 설명을 저렇게 하신건지 궁금합니다. !
- 미해결홍정모의 따라하며 배우는 C++
맥에서 Makfefile 사용하지 않고, vscode를 사용하여 헤더파일 포함해 실행시키는 법
답변들이 외부 링크만 알려주고 불친절하다고 생각해 직접 찾아보고 적어봅니다. 시작한지 1주차라 많이 틀릴수도있습니당일단 이건 제 폴더 화면이구요 ch1.cpp가 메인함수이고, 리소스에 add함수(헤더파일 및 바디)를 넣었습니다. 이제 각각에 main.cpp(저는 ch1.cpp라고함) , add.cpp , add.h입니다. 여기서 명령어를 보통 g++ -std=c++14 -Wall ch1.cpp -o test.out 이렇게 치실텐데 이러면 오류나면서 실행이 되지않죠 왜 안될까요? 링커라는게 각각의 cpp파일들을 컴파일한 후에 obj파일로 만들고 이것들을 실행이 가능한 하나의 exe파일 만드는 과정중에 하나인데 우리는 지금 main함수 cpp파일 하나만 컴파일 해놓은 겁니다. 즉 컴파일러가 exe파일로 만들려는데 main.cpp이 main.o로 만들어진거는 확인이 되었는데 add.cpp파일이 컴파일 안되어있으니까 이 링커과정에 문제가 생기는거죠. 해결방법은 간단합니다 add.cpp파일도 컴파일 해주면 대여g++ -std=c++14 -Wall ch1.cpp add.cpp -o test.out -> 해석하면 g++컴파일러 사용해서 ch1.cpp 파일 컴파일하고 add.cpp파일도 컴파일해서 test.out이라는 실행파일 만들어줘 입니다. 이러면 이제 정상적으로 실행이됩니다. cpp배운지 일주일차라 틀린 부분이 있을수도 있어요. 그래도 실행되죠?
- 미해결홍정모의 따라하며 배우는 C++
Heap 은 메모리의 위치가 어디에 있는지 모른다는 언급을 하셨는데
그러면 CPU가 메모리에서 읽어올 때 하는 캐시에서도 손해를 볼 수 있나요? 아니면 그것도 감안하고 데이터를 캐싱하나요? c++과는 관련 없는 질문이지만 혹시 답변 가능하시면 감사하겠습니다.
- 해결됨홍정모의 따라하며 배우는 C++
[3:25] 함수 오버로딩 더미 변수
operator ++ 를 오버로딩하는 구문이 두 군데가 있어서, ambiguity가 발생하기 때문에, 이를 구분하고자 dummy parameter, int를 넣은 것이다, 정도로 이해하였습니다.그럼 실제 main 함수에서, 컴파일러는 어떻게 d++ 이 postfix overloading(line 19 ~ 24)에 해당하는지 알아낼 수 있나요? 반대로 ++d가 line 19 ~ 24로 가는 것이 아니고, line 12 ~ 16으로 가야 하는지 어떻게 알아내나요?
- 미해결홍정모의 따라하며 배우는 C++
3.8 비트단위 연산자
안녕하세요. 비트단위 연산자를 공부하던 중 궁금한 점이 생겼습니다.왜 컴파일 했을 시, bitset<4>(0110 >> 2)가 0001이 아닌 0010이 나오는지 모르겠습니다.알려주시면 정말 감사하겠습니다.#include <iostream> #include <bitset> using namespace std; int main() { cout << bitset<4>(0110 >> 2) << endl; }
- 미해결홍정모의 따라하며 배우는 C++
3.4 조건 연산자 우선순위
#include <iostream> using namespace std; int main() { int x = 5; cout << (x % 2 == 0) ? "even" : "odd" << endl; }안녕하세요. (x % 2 == 0) ? "even" : "odd"로 쓰면 컴파일 오류가 나는데, 이를 해결하려면 ((x % 2 == 0) ? "even" : "odd") 이렇게 괄호로 한 번 더 묶으면 된다고 하셨습니다. 연산자 우선순위 때문에 오류가 나는 거라고 하셨는데, 어떤 연산자들끼리 우선순위가 충돌하는 건지 궁금합니다.
- 미해결홍정모의 따라하며 배우는 C++
함수포인터가 람다와 비슷한 개념인가요??
동작을 갖는 변수라는 점에서 자바의 람다와 동일한 개념인것 같다고 생각되는데 맞나요??
- 해결됨홍정모의 따라하며 배우는 C++
메모리 할당에 관하여
변수의 메모리 할당은 언제 이루어지는 건가요? 변수를 선언하면 쓰레기값으로 초기화되는 건가요? 이 경우 선언 즉시 메모리가 할당되는 게 맞는지도 궁금합니다.혹은 사용자가 선언 및 초기화 시에 메모리 할당이 이루어지는 걸까요?혹은 해당 변수에 무언가 대입되어야 메모리 할당이 이루어지는 건가요?
- 미해결홍정모의 따라하며 배우는 C++
virtual keyword 관련
Virtual을 상속받는 함수에서 뒤에 override를 달아주는데 앞에도 virtual을 달아줄 필요가 있을까요?
- 해결됨홍정모의 따라하며 배우는 C++
함수 호출 로그에 대해 질문 있습니다.
지금 전문가를 위한 C++ (개정판 3판)으로 공부하고 있습니다. 이 부분에서 오류가 발생해서 구글 검색을 해봤는데도 해결을 하지 못했습니다.이 예제를 실행시키려면 어떠한 문법을 써야 하나요?
- 해결됨홍정모의 따라하며 배우는 C++
학원 선생님이 주석을 각주라고 말하셨는데 이것도 맞는 말인가요?
게임학원에 다니면서 언리얼과 프로그래밍 수업을 듣고 있습니다.제가 묻고싶은 것은 학원 선생님이 주석을 각주라고 하셨는데 이 표현도 맞는말인가요?
- 해결됨홍정모의 따라하며 배우는 C++
섹션 2.2 정수 형 부분에서 질문있습니다.
섹션 2.2 정수 형에서 질문이 있습니다.맨 앞에 비트는 부호 비트라서 -1을 해주는 것까지는 이해하겠는데 0을 표현하기 때문에 하나를 빼줘야 하는 게 이해가 안 가요.영상에서 8분 32초 부분입니다.
- 미해결홍정모의 따라하며 배우는 C++
헤더가드를 제일 메인 파일에 넣으면 안되나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 제일 메인이 되는 파일에 헤더가드를 넣으면굳이 다른 헤더파일들에 안 넣어도 괜찮다고 생각이 드는데 그렇지 않은 이유가 무엇인가요?
- 해결됨홍정모의 따라하며 배우는 C++
반복문 안에 선언
안녕하세요. 반복문 안에 선언을 할 경우 매번 메모리가 회수되고 할당되나요?메모리의 할당과 회수는 운영체제가 관여한다고 알고 있는데, 위와 같은 경우 성능에 좋지 못한 영향을 줄 것 같습니다.만약 제가 컴파일러라면 반복문 안에 선언할 경우 이를 파악해 메모리를 회수하지 않고 반복문을 빠져나갈 때 회수할 것 같습니다. 실제로 컴파일러도 이렇게 동작하는지, 만약 아니라면 반복문 외부에 캐싱하는 것이 유의미한 일인지도 궁금합니다.
- 해결됨홍정모의 따라하며 배우는 C++
블록 내에서 선언한 vector를 이차원 vector에 넣었을 때
블록 안에서 선언한 vector은 블록 밖으로 나가면 회수되는 것으로 알고 있습니다.그런데 만약 이 vector를 블록 밖에서 선언한 이차원 vector에 넣었을 때 어떻게 되나요?실행은 잘 되는데 이게 컴파일러가 길이를 유지시켜주는 건지, 아니면 이차원 vector에 복사되는 것인지 궁금합니다. vector<vector<int>> wheelList(NUMBER ); //caching { vector<int> wheel(SIZE); string temp; for(int i = 0; i < 4; i++){ cin >> temp; for(int j = 0; j < NUMBER; j++){ wheel[j] = temp[8 - j - 1] - '0'; } wheelList[i] = wheel; } }
- 미해결홍정모의 따라하며 배우는 C++
대략 7분부터 작성하시는 Calc클래스에서
}Calc(int init_value) : m_value(init_value) {} Calc& add(int value) { m_value += value; return *this; } Calc& sub(int value) { m_value -= value; return *this; } Calc& mult(int value) { m_value *= value; return *this; }Calc& add, Calc& sub ,Calc& mult에서&를 지워도 오류가 안나더라구요 Calc add(int value) { m_value += value; return *this; } Calc sub(int value) { m_value -= value; return *this; } Calc mult(int value) { m_value *= value; return *this; }&만 지우고 int main() { { Calc cal=10; cal.add(10).sub(1).mult(2).print(); //38 cal.add(1).print();//21 return 0; } };돌렸는데 38로 값이 똑같이 나왔어요차이가 뭐지? 생각이 들어서add를 한번 더 했는데 21이 나오더라구요디버깅해보니까 20으로 시작하는 걸로 나오는데 이유를 모르겠어서요차이가 뭘까요?
- 미해결홍정모의 따라하며 배우는 C++
extern 질문
//test.cpp #include <iostream> using namespace std; static int g_a = 1; // forawrad declaration void doSomething(); // == extern void doSomething(); extern int a; int main() { doSomething(); cout << a << endl; return 0; }// test2.cpp #include <iostream> int a = 10; void doSomething() { using namespace std; cout << "Hello" << endl; }다음 코드 중 test.cpp 파일에서 void doSomething();같은 경우는extern void doSomething();이렇게 extern 을 붙이든 말든 똑같이 잘 작동합니다. 하지만extern int a;의 경우에는 extern 없이int a;이렇게만 하면 linker error가 나옵니다. 이유가 궁금해요. 다음은 해당 linker error 입니다.현재 맥북 프로 사용 중이며 arm64입니다.VS code로 std=c++17 컴파일 했습니다.duplicate symbol '_a' in: /var/folders/js/x_hy51p16_x1jsv90sbbh7mw0000gn/T/test-06a7e1.o /var/folders/js/x_hy51p16_x1jsv90sbbh7mw0000gn/T/test2-9147ce.o ld: 1 duplicate symbol for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)