월 24,200원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결홍정모의 따라하며 배우는 C++
강의랑 똑같이 했는데 에러가 납니다.
똑같이 했는데 보기와 같은 에러가 나네요 정말 여러번 봐도 틀린게 없는데 이상합니다.
- 미해결홍정모의 따라하며 배우는 C++
void setCents(int cents)함수에 대하여
갑자기 헷갈리네요. setCents함수가 m_cents = cents가 함수의 전부인데 여기 값을 리턴하는 것도 아니고 안에서 m_cent = cets를 하면 아무런 의미가 없는 함수가 아닌가요? 아니면 혹시 이 함수가 클래스의 멤버 함수라서 m_cents의 값을 직접적으로 바꿀 수 있는것인가요?
- 미해결홍정모의 따라하며 배우는 C++
[5:32] base class를 상속받아 내용이 추가되지 않는 class를 만드는 이유
안녕하세요, class의 멤버함수를 specialization하기 위해서 상속을 받아 구현하는 부분에서 이해가 되지 않아 질문드립니다. 강의에서는 아래와 같이 specialization 하려하는 멤버함수가 포함된 class를 base class로 변경 후 이를 상속받는 class를 하나 정의합니다. 이 이유가 무엇인가요? 'char' 형 이외에 대해서는 base class와 똑같이 기능하게 하기 위해서 인가요? 명확하게 이해가 되지 않아 질문드립니다. 바쁘시겠지만 답변해주시면 공부하는데 큰 도움이 될 것 같습니다. 감사합니다! template<typename T, int size> class StaticArray_BASE { private: T m_array[size]; public: T* getArray() { return m_array; } T& operator[](int index) { return m_array[index]; } void print() { for (int count = 0; count < size; count++) cout << (*this)[count] << ' '; cout << endl; } }; template<typename T, int size> class StaticArray :public StaticArray_BASE<T, size> { };
- 미해결홍정모의 따라하며 배우는 C++
[1:37] 숨어있는 null character 포함해서 "Hello, World"는 13글자 아닌가요?
안녕하세요, 교수님께서 아래 string에 대해서 숨어있는 null character까지 14글자라고 하셨는데 실제로는 13글자인것 같아 중요한 내용같지는 않지만 문의드립니다. strcpy_s(char14.getArray(), 14, "Hello, World");
- 미해결홍정모의 따라하며 배우는 C++
8:26 resizing
안녕하세요. 비전공자입니다. #include <iostream> using namespace std; int main() { /**********resizing**********/ int* fixed_arr2 = new int[] { 1, 2, 3 }; //1. 기존 array element 및 메모리 주소 출력 for (int i = 0; i < 3/*아쉬운 부분*/; i++) cout << fixed_arr2[i] << "\t\t" << (uintptr_t)&fixed_arr2[i] << endl; //2. resizing 할 메모리 크기 입력 int mdf_length; while (1) { cout << "\nWhat number would you like to resize this array? (n > 3) : "; cin >> mdf_length; if (cin.fail()) { cin.clear(); cin.ignore(32767, '\n'); continue; } else break; } //3. 더 큰 메모리 정의 및 element 복붙 int* mdf_arr2 = new int[mdf_length]; for (int i = 0; i < 3; i++) mdf_arr2[i] = fixed_arr2[i]; //4. 나머지 메모리 element 입력 for (int i = 0; i < mdf_length - 3; i++) { int j; while (1) { cout << i + 3 + 1 << "번째 element를 입력하세요. : "; cin >> j; if (cin.fail()) { cin.clear(); cin.ignore(32767, '\n'); continue; } else break; } mdf_arr2[i + 3] = j; } //5. 기존 array 반환 delete[] fixed_arr2; //6. resizing한 array element 및 메모리 주소 출력 for (int i = 0; i < mdf_length; i++) cout << mdf_arr2[i] << "\t\t" << (uintptr_t)&mdf_arr2[i] << endl; delete[] mdf_arr2; return 0; } array resizing 코드를 직접 짜봤는데요. /*아쉬운 부분*/에서 매직넘버 3을 sizeof(fixed_arr2) / sizeof(int) 로 표현하지 못하는게 조금 아쉽네요. fixed_arr2는 동적 할당시킨 포인터(4바이트)니까요. 동적 할당된 array 크기를 나타내는 매직 넘버를 표현할 다른 테크닉이 있을까요? 그리고 결과가 아래 사진과 같은데, 원래 15529624로 시작하던 메모리 주소가 새로 복붙한 array는 15492176으로 시작하니 제가 의도하던 resize가 아닌 것 같아서 여쭙습니다. 정확히 기존에 차지하던 15529624 주소부터 시작할 방법은 없을까요?? 그리고 3. 더 큰 array에 element를 복붙하는 과정에서 오버런 경고는 어느정도 이해가 갑니다. 20바이트 자리에 8(element 3개 = 12가 아닌가?)바이트만 썼다고 하네요. 근데 동적 할당하기 위해 포인터로 선언한 mdf_arr2와 fixed_arr2는 각 요소를 dereference하기 위해 아래와 같이 * 문자를 써야 하지 않나요? 이렇게 쓰니 오류가 납니다. *mdf_arr2[i] = *fixed_arr2[i]; 혹은 mdf_arr2[i] = *fixed_arr2[i]; 질문이 많네요 ㅎㅎ 읽어주셔서 감사합니다. 항상 질문 탭에서도 도움받고 있습니다.
- 미해결홍정모의 따라하며 배우는 C++
함수 오버로딩시 매개변수가 const 일경우
매개변수가 참조나 포인터일때 const 의 유무로도 함수오버로딩이 가능한 것으로 알고 있는데 void function(int *t_array, int length, void (*fptr)(int &val)) { for (int i = 0; i < length; i++) fptr(t_array[i]); } void function(int *t_array, int length, void (*fptr)(const int &val)) { for (int i = 0; i < length; i++) fptr(t_array[i]); } 위와같이 함수 포인터를 사용해서도 구분이 가능하더라고요. 그런데 함수포인터로 넘겨줄 함수가 아래와 같이 오버로딩이 되어있을때 void print( int const & x ) { std::cout << x << std::endl; return; } void print( int & x ) { std::cout << x << std::endl; return; } candidate function 에러가 발생하더라고요 print 함수중 하나만 주석을하고 컴파일을하면 에러가 발생하던데 차이점을 잘 모르겠습니다;;
- 미해결홍정모의 따라하며 배우는 C++
조금 엉뚱한 질문이 있습니다.
base 클래스 내에 있는 변수 m_value를 derived에 상속해서 함수를 이용해 값을 바꾸는건 결국 derived에 있는(상속받은) m_value값을 바꾸는거 맞나요? 예를 들어 base my_base(5)와 derived my_derived(6)이 있을때 저 함수를 이용해서 값이 바뀌는건 my_derived 에 상속받은 변수 m_value 인건가요? 그게 맞다면 약간 엉뚱한 생각이 들었는데 derived 클래스 내에서 base 클래스 내의 변수를 접근해서 바꿀 수 있는 방법도 있나요? 저 위에 예시에서 나온 base my_base 의 현재 5인 m_value 값을 derived 클래스 내에서 함수를 통해 다른 수로 바꿀수도 있나요? base 내에서 레퍼런스를 리턴하는 함수를 만들어서 m_value를 리턴하고 derived에서 그 리턴받은 함수를 이용해 값을 수정하려 해봤는데 안되더라구요.
- 미해결홍정모의 따라하며 배우는 C++
번외 질문
강의 마지막에 내주신 퀴즈에서 궁금증이 생겼습니다. cout << std::bitset<8>(bi >> 2) << endl; cout << std::bitset<8>(num1 | num2) << endl; cout << std::bitset<8>(num1 & num2) << endl; cout << std::bitset<8>(num1 ^ num2) << endl; 이것이 퀴즈의 정답이라 생각하는데, 이 코드의 출력값을 십진수로 표현하고 싶어졌습니다. 그래서 구글링을 통해 <typeinfo>를 가져와서 타입을 확인해 보니 생전 처음보는 타입이었고 억지로 int를 끼워넣어보려 했지만, 에러가 떴습니다. 혹시 이 코드의 출력값을 십진수로 나타낼 수 있는 방법이 있을까요? 강의 주제와는 조금 동떨어진 질문이라서 죄송합니다. ㅎㅎ;; 계속해서 따배씨 공부 열심히 해서 c++ 마스터 하도록 하겠습니다. 항상 잘 보고 있습니다.^^
- 미해결홍정모의 따라하며 배우는 C++
explicit instantiation 을 하게되면 메모리적으로 어떻게 되나요?
explicit instantiation 을 하게되면 단순하게 컴파일러에게 어떤 타입을 사용할지만 알리는 역할을 하게되나요? 따로 메모리가 생성된다던지 그런일이 발생하는지 궁금해요
- 미해결홍정모의 따라하며 배우는 C++
const int&를 사용했을때 왜 리터럴값이 들어가도 작동하는지
const int&를 사용했을때 왜 리터럴값이 들어가도 작동하는지에 대한 원리를 알 수 있을까요? 뒷쪽에서 익명객체 파트 듣다가 궁금한게 생겼는데 class mine { private: int value; public: mine(int m) :value(m) {} int getvalue() const { return value; } }; mine add(mine &m1, mine &m2) { return mine(m1.getvalue() + m2.getvalue()); } int main() { cout << add(mine(5), mine(6)); return 0; } 이 코드에서 add 함수 파라미터에 const를 붙이지 않으면 main에서 add함수가 작동하지 않습니다. 따로 mine m1(5) ,m2(6) ; 등을 만들어 add(m1,m2)를 하면 작동이 됩니다. 왜 이런일이 일어나는지에 대해 조금 혼란이 생겨서 앞 강의들을 다시 들어보다 여기까지 왔습니다. 답변 부탁드립니다
- 미해결홍정모의 따라하며 배우는 C++
15:36 에서 왜 class가 좋은지 설명해주셨는데
안녕하세요. 1. 제목 그대로 왜 class가 좋은지 말씀해주셨는데요, 간단하게 정리하면 이 부분에서 class가 좋은 이유가 결국 메모리를 먹지 않기 때문이라고 할 수 있을까요? 2. 그리고 class와 구조체의 메모리와 관련해서 질문이 있습니다. Friend jj; cout << &jj << endl; Friend_struct a; cout << &a << endl; -> 00F9F858 00F9F7E8 Friend는 class이고 Friend_struct는 구조체인데요, 메모리 할당 측면에서 class와 structure가 어떻게 다른지 확인해보고 싶은데 Friend 자체는 instantiation이 되지 않았기 때문에 주소를 출력할 수 없는 것처럼 구조체인 Friend_struct역시 마찬가지인가요? 그리고 구조체에서도 instance, instantiation이라는 개념이 있는지 궁금합니다.
- 미해결홍정모의 따라하며 배우는 C++
[10.3 집합관계 ](10:15)집합관계에서 참조와 포인터의 차이에 대해 질문 드립니다.
[10.3 집합관계 . 10:15] 안녕하십니까 고생많으십니다 1. 10:15 에서 push_back 메소드에 입력하는 인스턴스를 참조로서 받으면 pointer를 이용하지 않고도 주소로 접근할 수 있지 않을까 하여 질문드립니다. ( pointer를 이용하는 것으로 수정한 것과 결과가 같은지). 2. 참조로 집합관계 형성이 가능하다면, 포인터와 레퍼런스 중 어떤것이 더 유리한지 궁금합니다.
- 미해결홍정모의 따라하며 배우는 C++
, < 연산자 우선순위
if(a>0, b>0)을 하게되면 if(b>0)으로 인식해서 if(a>0 && b>0)으로 수정하는것이 맞는것인가요 if(90<a<100)을 하게되면 if((90<a)<100)으로 인식하는 것이 맞는 것인가요 if(90<a && a<100)으로 수정하는 것이 맞는 것인가요 만약 100<= a ,b <=1000 를 조건문에 넣고 싶을때 &&을 4번쓰는 방법외에는 없는 것인가요?
- 미해결홍정모의 따라하며 배우는 C++
레퍼런스 관련 질문이 있습니다.
class frac { private: int _nume; int _deno; public: frac(const int &a,const int &b){ _nume = a; _deno = b; } void print() { cout << &_nume << endl; } }; int main() { int a = 5; frac my_frac(a,6); cout << &a << endl; my_frac.print(); return 0; } frac 클래스의 생성자에서 int a를 레퍼런스로 받아와 _nume에 대입? 시킨 후 클래스 내의 print 함수로 nume의 주소값을 출력했을때 int a의 주소와 다른값이 나옵니다 레퍼런스가 선언될때 동시에 초기화를 해주면 같은 주소값을 가질수 있다고 알고있는데 저렇게 클래스 내의 private에 선언돼어 있을 경우에는 같은 주소값을 가지게 할 수 없나요?
- 홍정모의 따라하며 배우는 C++
그래픽스 공부해보고 싶습니다
삭제된 글입니다
- 미해결홍정모의 따라하며 배우는 C++
부동소수점의 오차에 대해 제가 이해한 것인지 궁금합니다.
영상 14:30 쯤에 double을 비교해주시고 차이를 보는 방법을 알려주셨습니다. 혹시 차이말고 값을 알고싶어서 setprecision(20)을 통해서는 값을 받았습니다. 이렇게 되면 오차가 더 커지게되고 그 숫자로 다시 차이를 알게되었을 때 오차가 더더욱 커지게 된다고 이해를 했는데 맞는 것인지 궁급합니다. 또 setprecision(20)을 통해 받은 double d1의 값과 실제 d1의 값이 같고 출력값이 다른걸로 이해를 했는데 맞는 것인지 궁금합니다.
- 미해결홍정모의 따라하며 배우는 C++
string에 대해 질문드립니다.
안녕하세요. 강의를 보다 string타입을 사용하시는 것을 보고 아래와 같이 궁금증이 생겨서 한 번 실험해보았는데 왜 이렇게 되는지 잘 모르겠어서 질문드립니다. #include <iostream> #include <string> using namespace std; int main() { string hello = "Hello, my name is Jack Jack"; cout << hello << endl; cout << &hello[0] << endl; cout << &hello[1] << endl; cout << &hello[2] << endl; return 0; } -> Hello, my name is Jack Jack Hello, my name is Jack Jack ello, my name is Jack Jack llo, my name is Jack Jack 이전에 문자 포인터의 특성 강의에서 cout에서는 문자열은 특별히 처리한다고 배웠고 문자열의 주소나 포인터를 출력해도 문자열이 그대로 출력된다고 배웠기 때문에 다음같이 앞에 &를 붙여서 출력했을 때 주소가 아니라 문자열이 그대로 출력될 것이라고 어느정도는 예상을 했습니다만 해당 index의 문자를 포함한 앞쪽의 문자들을 제외한 나머지 문자열이 출력되는 건지, 그리고 첫번째 element인 &hello[0]가 아닌 &hello[1]를 출력했을 때 H 이외의 문자열이 출력되는 것인지 궁금합니다. 감사합니다.
- 미해결홍정모의 따라하며 배우는 C++
inline 함수
inline은 설명을 했기 때문에 간단히 넘어갔는데 기억이 안나서 다시 듣고 싶으면 무엇을 보면되나요?
- 미해결홍정모의 따라하며 배우는 C++
안녕하세요 교수님 오류 질문드립니다
2019버전 사용하고있구요 #include <iostream> int main() { return 0; } 강의 12분 30초 부분까지 했어요 2017과는 다르게 2019라서 build 에 run code analysis on solution 이라고 되어있어서 눌렀는데 Severity Code Description Project File Line Suppression State Error (active) E1696 cannot open source file "iostream" Project1 C:\Users\D Han\source\repos\Project1\Source.cpp 1 이렇게뜨네요 강의에서 나온것처럼 똑같이 쳤는데 iostream을 못찾는다는 소리는 뭔가요?
- 미해결홍정모의 따라하며 배우는 C++
디버깅 오류
3.5강 예제를 그대로 따라하면서 이전에 x,y에 관한 관계연산자를 그대로 지우고 그 위에 double 예제를 입력하고 컴파일했는데 오류가 생겼습니다. 새로운 solution file을 만드는 것 말고 이런 문제를 해결하려면 어떻게 해야하나요?