월 24,200원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결홍정모의 따라하며 배우는 C++
namespace 관련 질문
안녕하세요 좋은 강의 감사드립니다. namespace와 external variable 관련해서 질문하고 싶은 것이 있는데, 강의에서 보면 namespace 내에 external variable을 정의한 cpp파일을 작성한 후 헤더파일에서 동일한 명칭의 namespace를 정의한 후 external variable을 선언해 주었는데요, 그랬을 때 cpp 파일에서의 namespace와 헤더파일에서의 namespace도 동일한 것이라고 볼 수 있는 것인가요? 아니면 서로 다른 것이지만 내부의 변수가 constants::pi로 동일한 이름을 가지고 있기 때문에 external variable 선언이 가능한 것인가요?
- 미해결홍정모의 따라하며 배우는 C++
9.8[3:40] Dollar -> cents 변환 문제
안녕하세요, Cents 클래스와 Dollar클래스를 이용하여 Dollar -> cents로 변환을 하고있는데, 메인함수에서 Cents cents = dol; 이 부분이 잘 이해가 가지 않습니다. 제가 이해한 프로세스가 1 .Dollar dol(3); 으로 선언 2. Dollar 클래스 안에 operator Cents()로 Cents로 형변환 오버로딩이 실행되서 dol(3)의 타입이 Cents가 됨. 3. 따라서, 메인함수의 cents객체에 대입 가능 (Cents가 사용자 정의 타입이므로) 제가 이해한게 맞나요..?
- 해결됨홍정모의 따라하며 배우는 C++
[3:21]전위/후위증가 오버로딩 구별 질문(dummy)
안녕하세요! 항상 감사드립니다. 3:21경에 전위/후위증가 연산자 오버로딩의 구별을 매개변수에 int라는 더미를 넣어 오버로딩을 한다고 설명해 주셨는데, 메인 함수의 ++d와 d++이 어떻게 더미에 의해 구별이 되는지 궁금합니다. 디버거를 돌려봐도 잘 이해가 가지 않네요.. (아니면 그냥 암기해야하는 부분인지...)
- 미해결홍정모의 따라하며 배우는 C++
포인터 개념 질문드립니다
안녕하세요 교수님 바쁘신데도 직접 답변주셔서 감사합니다. 6.8의 12분14초에 궁금한게 있습니다. x86을 기준으로 ptr이 포인터이므로 저는 *ptr 과 *(ptr+4) 가 배열의 인접 값이라고 생각하였는데 *(ptr+1)이 다음값이 어떻게 되는건가요? 궁금해서 아래 코드로 써봤는데 각각 주소를 출력할때는 4차이가 맞는데 빼보니까 또 1이라고 합니다. 제가 어떤 개념이 잘못된것인지 궁금합니다. 감사합니다 #include <iostream> using namespace std; int main() { int array[5] = { 11,12,13,14,15, }; int* ptr = array; cout << *ptr << " " << *(ptr + 1) << endl; // +4를 해야 다음 index로 넘어갈것이라고 생각했는데 1로 넘어감 cout << (int)&ptr[1] << " " << (int)&ptr[0] << endl; //주소 차이는4 cout << &ptr[1] - &ptr[0] << endl; //차이를 찍어보면 1 return 0; }
- 해결됨홍정모의 따라하며 배우는 C++
call by reference 관련 질문입니다
9분 09초 쯤에 getSinCos(double degrees , double &sin_out, double &cos_out) 함수에서 double degrees 부분을 const double °rees로 바꾸셨는데요 궁금한것은 main함수 안에서 getSinCos(..)안의 argment중 degrees부분에 바로 상수를 넣어준다면(ex : getSinCos(30, ...) double degrees에서 const double& degrees로 바꾸지 않아도 효율?의 차이는 별로 없지 않을까 생각되는데 제 생각이 맞을까요? 아니면 degrees를 상수로 넣어준다고 해도 그것에 의해 메모리가 할당되면서 좀 더 효율이 안좋아지나요?
- 미해결홍정모의 따라하며 배우는 C++
위임 생성자 전방선언에 대한 질문입니다.
4분쯤 위임 생성자 코드 :Student(0, name_in)에서 상수와 문자열을 매개변수로 하는 생성자는 Student(0,name_in)보다 아래에 정의되어 있는데 컴파일러 입장에서 전방선언이 없어도 에러가 나지 않는 이유가 궁금합니다.
- 미해결홍정모의 따라하며 배우는 C++
isEven, isOdd 함수 관련 질문입니다
12분 쯤에 함수포인터를 이용해서 true를 리턴하는 함수인 isEven과 isOdd가 있습니다.(이때는 return false가 없습니다 오직 조건이 맞을때 true만 리턴) 이것을 이용해서 값을 출력 해보니 isOdd일떈 1, 3, 5, 7, 9가 출력이 되지만 isEven이면 0,1,2,3,4,5,6,7,8,9 즉 배열이 다 출력이 됩니다 디버거로 찍어보니까 isOdd는 0일땐 false 1일땐 true 이런식으로 홀수일땐 true, 짝수일떈 false가 반환이 되지만 isEven 함수는 짝수, 홀수 구분없이 모두 true가 반환이 됩니다. 밑에 비슷한 질문이 있어서 보니까 cpu 산술연산에 의해 그렇다 라고 답변이 되어있는데 그렇다면 isOdd를 사용할시 0을 제외한 1부터 9까지는 모두 true가 반환되어야하는게 아닌가요? 잘 이해가 안되서 질문드립니다
- 해결됨홍정모의 따라하며 배우는 C++
17:00 &의 위치
void printElement(int &arr[4]) 라고 입력을 했을때 오류가 생깁니다..... 반면에 강의처럼 void printElement(int (&arr)[4]) 라고 입력을 하면 오류가 생기지 않는데... 왜 그런 걸까요? 저 괄호를 굉장히 의도하고 쓰신거 같은데 딱히 설명을 안되어 있네요.
- 미해결홍정모의 따라하며 배우는 C++
thread 함수 안에 while문을 넣는이유?
std::thread t2 = std::thread([]() { cout << std::this_thread::get_id() << endl; while (true) {} }); Q1. 23:27초에서 thread 함수 안에 while문을 넣는이유가 있을까요?
- 미해결홍정모의 따라하며 배우는 C++
friend에 관한 질문 드립니다!
강의 8:25 에서 friend void B::doSomething(A& a); 가리키시면서 B안에 doSomething이 있다는 것을 class A가 알 방법이 없다고 하셨는데, friend void B::doSomething(A& a); 이 문구 자체가 B안에 doSomething이 있다는것을 알려 주는게 아닌가요? B::doSomething(A& a) 저는 이 문구를 B안에 doSomething가 있다 이렇게 이해를 하게 되는데요. 이렇게 이해하면 안되는지 궁금합니다.
- 미해결홍정모의 따라하며 배우는 C++
Team Explorer에서 Solutions 탭 만드는 방법
(질문 아님)Team Explorer에서 Solutions탭이 안보이는 것을 해결하는 방법. Visual Studio 2019 version 16.8 이상에선 Team Explorer에서 Solutions이 보이지 않습니다. - 해결방법 Tools>Options>Environment>Preview Features 에서 New Git user experience의 체크박스를 해제하면 됩니다. 강의를 따라가다가 Solutions이 안보여서 엄청 당황했었네요.. 다들 참고하세요!! 나중에는 visual studio에서 추구하고자 하는 방향을 따라가는 것이 맞겠지만.. 우선 강의는 들어야하지 않겠습니까~? 다들 즐거운 TBC 공부 되세요!
- 해결됨홍정모의 따라하며 배우는 C++
함수
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이 작동하는 방식이 같은 것인가요?
- 미해결홍정모의 따라하며 배우는 C++
MyConstant.cpp 에선 헤더파일 없이 값에 접근할 수 있었던 이유가 궁금합니다.
MyConstant.cpp 가 Main.cpp 나 Test.cpp 처럼 헤더를 include 하지 않고도 값을 선언할 수 있었던 이유가 궁금합니다. 그리고 MyConstant.cpp 의 namespace 가 MyConstant.h 의 namespace와 같은 공간인지 궁금합니다.
- 해결됨홍정모의 따라하며 배우는 C++
다중포인터의 메모리
코드2 배열의 주소를 찍어봤을 때 4씩 늘어나는 것을 볼 수 있었습니다. 코드3 이중포인터를 사용한 배열의 주소를 찍어봤을 때 8이 늘어나는 것을 볼 수 있었습니다. 코드 4 행렬의 주소를 찍어봤을 때 열은 4씩 늘어나고 행은 20이 늘어난 것을 볼 수 있었습니다. 주소를 저장하는 공간은 정해져있는 것으로 알고 있는데 첫번째 코드의 경우 8이고, 두번째 코드의 경우 4이고 3번째 경우에는 8이며 네번째 코드의 경우는 다음 행과의 차이가 20인가요 잘못 비교를 하고 잇는 것같은데 뭐가 문제일까요 이중포인터 배열을 만들고 배열을 만들때의 메모리가 어떻게 할당이 되는지 궁금합니다. 그림을 그려서 이해해보려하는데 잘 안됩니다. 2차원 배열이라서 메모리 주소로 이해를 하면 안될 것 같은데 어떻게 생각하면 될까요? cout << sizeof(int *) << endl; //8 -------------------------------------1 int *matrix = new int[3]; cout << matrix << endl; //0x...20 cout << &matrix[0] << endl; //0x...20 cout << &matrix[1] << endl; //0x...24 -------------------------------------2 int **matrix = new int *[3]; cout << matrix << endl; //0x...20 cout << &matrix[0] << endl; //0x...20 cout << &matrix[1] << endl; //0x...28 -------------------------------------3 int **matrix = new int*[3]; for(int r=0; r<3; r++) matrix[r] = new int[3]; cout << &matrix[0][0] << endl; //0x..40 cout << &matrix[0][1] << endl; //0x..44 cout << &matrix[1][0] << endl; //0x..60 --------------------------------------4
- 해결됨홍정모의 따라하며 배우는 C++
주소 크기관련 궁금한게 있어서 여쭤봅니다
21분쯤에 64bit 컴퓨터에서 sizeof(&변수) 를 할 시 8byte 크기가 나왔습니다 그래서 궁금해서 크기가 2인 int형 배열을 선언 한 후에 각각의 주소를 출력해보니 차이가 4가 나더라구요 그렇다면 주소의 크기는 변수 사이의 간격?과는 별 상관 없다고 보는게 맞는건가요?
- 해결됨홍정모의 따라하며 배우는 C++
[2:40] string 에 대해 음수로 resize 하는 경우
강의에서와 같이 -1로 resize를 하면 "string too long" 라고 exception이 출력됩니다. 관련하여 본 강의에 대해 질문 및 답변 내용을 보면 함수의 parameter가 unsigned 라서 그렇다는 등의 내용이 있는데 이 내용을 어떻게 확인할 수가 있나요? 제가 resize 함수의 정의에 가서 본 내용에서는 아래의 내용인데 관련된 힌트를 얻을 수가 없네요, 관련하여 조언주시면 감사하겠습니다! void resize(_CRT_GUARDOVERFLOW const size_type _Newsize, const _Elem _Ch = _Elem()) { // determine new length, padding with _Ch elements as needed const size_type _Old_size = size(); if (_Newsize <= _Old_size) { _Eos(_Newsize); } else { append(_Newsize - _Old_size, _Ch); } }
- 미해결홍정모의 따라하며 배우는 C++
while문
강의시간 14:40분의 코드를 실습해보았습니다. escape_flag가 true가 되었는데 출력이 되는 이유가 무엇인가요 break는 중간에 탈출을 하게되지만 이경우에는 true로 바꾸고 while문의 끝까지 돌고 종료가되는 것인지 궁금합니다. #include <iostream> using namespace std; int main() { bool escape_flag = false; while(!escape_flag) { char ch; cin >> ch; if(ch == 'x') escape_flag = true; cout << ch << endl; } }
- 미해결홍정모의 따라하며 배우는 C++
14:00부근에서
설명하실 때, 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라서 해석하는데 어려움이 있는 것 같습니다.
- 미해결홍정모의 따라하며 배우는 C++
C언어를 하나도 모른상태로 수강해도 되나요??
학교에서 C++를 하는데 교수님이 C언어를 알고계신상태로 강의를 하셔서 이해가 하나도 안가더라구요 저는 전과를 해서 C언어를 안배웠는데 다른 애들은 다 배운상태고 C언어를 배우기엔 시간이 너무 촉박해서 그런데 바로 C++배워도 될까요??
- 미해결홍정모의 따라하며 배우는 C++
Interface 클래스
class IErrorLog { public: virtual bool reportError(const char* errorMessage) = 0; virtual ~IErrorLog() {} }; Q1. 인터페이스 클래스에서 pure virtual function에 = 0을 하는 이유가 리턴 타입이 bool이라 기본값 false 넣은건가요?