월 24,200원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결홍정모의 따라하며 배우는 C++
포인터와 주소의 크기
교수님 안녕하세요. 포인터와 주소의 크기 관련해서 제가 생각한 게 맞는지 확인하고자 질문 올립니다. 강의 내용에서 포인터가 주소를 변수에 저장한 것으로 이해했고 수업시간에 다뤄주신 코드를 살짝 변형하면서 실행해본 결과 포인터의 주소와 변수의 주소 고유의 크기가 일치하는 결과를 얻었습니다. 포인터 자체의 크기와 주소 자체의 크기가 존재하는 것은 알지만 항상 이 두개의 값이 같은 것으로 봐도 되는지 궁급합니다!
- 미해결홍정모의 따라하며 배우는 C++
extern 관련 질문이 있습니다
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++
똑같이 쳤는데 결과가 다르게 나와요
강의 마지막에 b.getThis()->print(); ref.getThis()->print(); 이 부분에서 출력하면 b와 ref로 받은 출력값은 각각 B와 A가 나와야 하는데, 저는 B, B가 나옵니다..ㅜ 이유가 멀까요?
- 미해결홍정모의 따라하며 배우는 C++
My_ADD
헤더파일의 표본을 설명하시면 이름을 My_ADD로하셨는데 add함수의 인클루드 중복이 사라지는 건지 잘 모르겠습니다. add함수의 인클루드 중복을 없애려면 #indef add라고해야하는것 아닌가요? #ifndef My_ADD #define My_ADD int add(int a, int b) { return a + b } #endif
- 미해결홍정모의 따라하며 배우는 C++
14분 04초
void set(const position2D & pos_target{ set(pos_target.m_x, pos_target.m_y); // 1}void set(const int & x_target, const int& y_target) //2{ m_x = x_target; m_y = y_target;}1부분에서 사용된 함수가 2부분에 바디가 있고,2함수의 전방선언이 없는데어떻게 컴파일러오류없이 1부분에서 2부분의 함수를 사용할 수 있는지 의문입니다
- 미해결홍정모의 따라하며 배우는 C++
실수로 잘못 입력한 내용의 결과물은 왜이렇게 나올까요?
Student.h에서 제가 실수로 Student 클래스의 _name을 안지우고 오버로딩 할 떄도 그대로 썼는데 아래와 같이 아예 _name부분은 출력이 안되고 바로 _intel이 출력이 되더군요. 그런데 그이유가 뭔지 모르곘습니다. 에러는 안납니다. 23:29초부분입니다.
- 미해결홍정모의 따라하며 배우는 C++
헤더 파일(1.11강)
open containing folder를 이용하여 myheaders파일을 새로 만들고 add.h파일을 옮기고 난 후 우측 explorer창에서 헤더 파일을 우클릭 하고 open을 눌렀는데 계속 실행이 안 되었습니다. include 하여 빌드는 되긴 하지만 이렇게 실행이 계속 안되는게 보편적인 문제인 건지 아니면 제 컴퓨터에 한해서 실행이 안 되는 건지 궁금하여 질문 남깁니다!!
- 미해결홍정모의 따라하며 배우는 C++
비주얼 스튜디오 프로젝트 관련 질문
'1140 평균 점수'라는 프로젝트의 '소스.cpp' 에서 Ctrl+F5를 눌러서 실행시켰을 때 다른 1141 파도반 수열같은 프로젝트의 영향을 받나요? 1140 평균 점수라는 프로젝트만 따로 빼서 실행을 했을 때는 정상적으로 작동을 하는데 이렇게 한 솔루션에 여러개의 프로젝트가 들어있을 때는 정상적으로 작동을 하지 않더라구요. 이유가 무엇인지 알고싶습니다.
- 미해결홍정모의 따라하며 배우는 C++
vector형 array 사용성. 단점
vector 로 array 를 사용하니 1. 사이즈를 안 정해줘도 된다. 2. 메모리 누수가 없다. 3. 각종 함수와 연동해서 쓸 수 있다. 등등 여러가지 장점이 있는 것을 알았습니다. 본론으로 가서... 전쟁 때 탱크 있는데 굳이 짱돌들고 싸울 필요 없다고 생각합니다 제가 궁금한건 현업에서도 vector 로 array를 사용을 많이 하나요? (이거 하나면 거의 만능처럼 여겨집니다.) 혹시 현업에서 vector를 많이 안 쓴다면 vector array의 단점이나 기피되는 이유를 알 수 있을까요?
- 미해결홍정모의 따라하며 배우는 C++
2:30 정도) const int &ref_x = 3 +4 는 왜 되는건가요?
0. int &ref_x = 3 같이 참조변수에는 리터럴상수가 들어갈 수 없는 게 맞을까요? 1. 그런데 앞에 const붙이면 리터럴 상수를 넣을 수 있다고 하시는 것 같은데 이유가 뭘까요? const를 쓰면 함수로 리터럴을 넘겨받을 수 있고(복사x 그대로 넘겨주기가능) 안쓰면 변수만 넘겨받을 수 있다는 것 같은데... 0번 질문은 제가 맞는 지 확인하고 싶은 것이고, 1번은 잘 몰라서 여쭤봅니다 답변 부탁드려요 ^^
- 미해결홍정모의 따라하며 배우는 C++
13.7 - 1:27 부분 이해가 잘 안됩니다
template<typename T> class A { private: T m_value; public: A(const T &num) :m_value(num) {} void print() { std::cout << m_value << std::endl; } }; template<typename T> class A<T*> { private: T* m_value; public: A(T* num) :m_value(num) {} //이 부분이 잘 이해가 가지 않습니다 void print() { std::cout << *m_value << std::endl; } }; 밑에 같은 질문이 있었고 교수님께서 답변도 해주셨지만 답변을 봐도 잘 이해가 안가네요.. 왜 저 부분에 A(cons T* num) : m_value(num) 은 안되는걸까요? 되도록이면 구체적으로 질문하고 싶었지만 어떤식으로 물어봐야 할지 감이 잡히지 않아서 구체적이지 못했습니다 죄송합니다 ㅠㅠ
- 미해결홍정모의 따라하며 배우는 C++
연습문제 출력관련
출력했을때 뒤에 이상한 문자가 나오는데 왜그런건가요??
- 미해결홍정모의 따라하며 배우는 C++
강사님과 질문 답해주시는 분들께
질문이 아니라서 게시판 성격과 맞지 않는다면 지우도록 하겠습니다. 강의 듣다가 문득 떠오른건데, 좋은 강의와 친절한 답변을 들을 수 있어서 너무 감사하다는 생각이 들었습니다. 페스트 캠퍼트 광고 엄청하길래 갔었는데 교제도 커리큘럼도 없이 그냥 즉흥적으로 하는 것 같은, 이 예기 했다가 저 얘기 했다가 하는 강의를 듣다가 포기했었습니다. 현재 40% 도 못들었지만 정말 만족하고 감사히 듣고 있습니다. 찾아보고 고민해도 모르겠어서 질문하면 엄청 친절한 + 제대로된 답변을 통해서 궁금증도 해결할 수 있었구요. 진심으로 감사드립니다.
- 미해결홍정모의 따라하며 배우는 C++
doSomething 함수에서
Fraction doSomething() { Fraction temp(2, 1); return temp; } 이렇게 만드셨는데 저는 Fraction doSomething() { return Fraction temp(2, 1); } 이렇게 하려고 하니까 type name is not allowed 에러가 뜨더라구요 그런데 <<생성자 오버로딩에서 friend std::ostream& operator << (std::ostream& out, const Fraction& f) { return out << f._numerator << " / " << f._denominator << endl; } 이 함수는 교수님처럼 안하고 리턴에 한번에 이렇게 써줘도 문제가 없던데 앞에서는 왜 에러가 나고 여기선 문제가 없을까요?
- 미해결홍정모의 따라하며 배우는 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 함수중 하나만 주석을하고 컴파일을하면 에러가 발생하던데 차이점을 잘 모르겠습니다;;