월 24,200원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨홍정모의 따라하며 배우는 C++
강의 내용과는 상관없지만
제가 지금까지 강의들을때 1단원은 1단원 솔루션 만들고 2단원은 2단원.. 이렇게 따로했는데 앞에 내용을 찾아봐야할 일이 점점 많이 생기는것 같아서 그러는데 혹시 이 솔류션들을 하나의 솔류션으로 합치는 방법이 있을까요?!
- 미해결홍정모의 따라하며 배우는 C++
17:28 질문입니다.
교수님 안녕하세요! 강의 잘 듣고 있습니다:-) std::cout 에 대해서 궁금한 점이 있어서 여쭈어 봅니다! cout을 할 때 순서는 상관이 없는걸까요? setprecision으로 자릿수를 정하신뒤 다음줄에 숫자로 연산을 했는데, 작동이 되는 이유와 원리가 궁금합니다. printf를 쓴다면 불가능 할텐데, cout은 왜 가능한가요? 변수를 사용하지도 않았는데 오류가 나지 않는 이유가 궁금합니다!
- 미해결홍정모의 따라하며 배우는 C++
29:31 질문드립니다
안녕하세요 교수님 간단한 질문 하나 드립니다. (제 코드의) 16줄에 double(1.0)과 1.0을 모두 출력해보았는데 1.0이 나와야 할 것 같지만 1이 나왔습니다. 자료형을 double이라고 명시까지 해줬는데 1이 나온 이유가 궁금합니다.
- 미해결홍정모의 따라하며 배우는 C++
1분28초 경우에따른 USBNetworkDevice()함수의 변경
강의중 1분28초 경에 경우에따라 USBNetworkDevice(long usb_id,long net_id) : USBDevice(usb_id),NetworkDevice(net_id){} 를 USBNetworkDevice(long id) : USBDevice(id),NetworkDevice(id){} 으로도 구현가능하다고 하셨습니다. 그런데 이게 상황에따라 전자는 무조건 사용못하고 후자는 사용가능하고 이런 경우가 생기는건가요 아니면 단지 예를들면 USBDevice와 NetworkDevice 가 같은 id를 사용해서 입력값을 하나만 받아도 되기에(입력값을 두개 받아오는것도 문법적으로 가능은하나) 기능적으로 최적화를 위해 후자를 사용하게 되는건가요?
- 미해결홍정모의 따라하며 배우는 C++
8.1 object, class,instance 제가 제대로 이해했는지 질문드립니다
object는 속성(변수)+행위(함수,메서드)를 갖는 모든 것들의 추상적 개념(메모리 주소 없어서)이라고 이해했습니다. class는 그 object 안에서 특정 행위(함수)+속성(변수)를 갖는 것을 묶어놓은 추상적 개념(메모리 주소 없어서)이라 이해했습니다. 그리고 instance는 class를 틀로 찍어낸 실체화된 것(주소 존재해서)이 라고 이해했습니다. 사람들이 object와 instance를 혼동하는 이유가 모든 instance는 object에서 파생된 것이기에 '모든 instance는 object이다. 즉, instance=object이다'가 성립하지만 모든 object가 인스턴스는 아니기 때문에 'object=instance'라고 하면 거짓이 돼서 그런 건가요?
- 미해결홍정모의 따라하며 배우는 C++
8.1 객체지향 프로그래밍 질문드립니다
일반 int등 타입의 배열은 foreach문 안에서 cout<< ele(배열원소); 이렇게 원소 하나씩 출력 가능한데 클래스 타입의 배열은 왜 cout<<ele; 이렇게 원소 하나씩 출력하려고 하면 오류가 날까요? 이유를 잘 모르겠습니다 혹시 몰라서 아래 코드 첨부해 봅니다 #include <iostream> #include <string> #include <vector> using namespace std; class Friend { public: int age=10; int weight=10; string name="na"; void print() { cout << age << " " << weight << " " << name << endl; } }; int main() { int arr[5]; for (auto& ele : arr) //배열 원소가 하나씩 파라미터 처럼 들어옴 { cout << ele;// 일반 int타입 배열은 배열 원소 cout으로 출력가능 } vector<Friend> arr1; for (auto& ele_arr1 : arr1) { cout << ele_arr1;// 클래스 Friend 타입 배열은 원소를 cout으로 출력 불가? ele_arr1.print(); } return 0; }
- 미해결홍정모의 따라하며 배우는 C++
강의 마지막부분 IntArray 클래스 구현 .
아래 코드는 제가 직접 구현해본 IntArray 클래스 입니다. ------------------------------------------------ #include<iostream> #include<initializer_list> class intarray { private: int m_length = 0; int* m_data = nullptr; public: intarray(unsigned length) :m_length(length) { m_data = new int[m_length]; } intarray(const std::initializer_list<int>& list) :intarray(list.size()) { int count = 0; for (auto& element : list) { m_data[count] = element; ++count; } } intarray& operator=(const intarray& arr) { if (this == &arr) { return *this; } this->m_length = arr.m_length; delete[] m_data; if (arr.m_data != nullptr) { m_data = new int[m_length]; for (int i = 0; i < m_length; i++) { m_data[i] = arr.m_data[i]; } } else { m_data = nullptr; } } void reset() { if (m_data != nullptr) delete[] m_data; m_data = nullptr; m_length = 0; } intarray& resize(const int &size) { if (size > m_length) { intarray temp(0); temp = (*this); reset(); m_length = size; m_data = new int[m_length]; for (int i = 0; i < temp.m_length; i++) { (*this).m_data[i] = temp.m_data[i]; } for (int i = temp.m_length; i < m_length; i++) { m_data[i] = 0; } } else if (size < m_length) { int* temp = new int[size]; for (int i = 0; i < size; i++) { temp[i] = m_data[i]; } reset(); m_length = size; m_data = new int[m_length]; for (int i = 0; i < size; i++) { m_data[i] = temp[i]; } delete[] temp; } return *this; } intarray& insertbefore(const int& value, const int& ix) { resize(m_length + 1); int* arr = new int[m_length - 1 - ix]; for (int i = 0; i < m_length - ix - 1; i++) { arr[i] = m_data[i + ix]; } m_data[ix] = value; for (int i = 0; i < m_length - ix; i++) { m_data[ix + 1 + i] = arr[i]; } delete[]arr; return *this; } intarray& remove(const int& ix) { intarray temp(m_length - 1); for (int i = 0; i < ix; i++) { temp.m_data[i] = m_data[i]; } for (int i = ix + 1; i < m_length; i++) { temp.m_data[i - 1] = m_data[i]; } resize(--m_length); (*this) = temp; return *this; } intarray& pushback(const int& value) { resize(++m_length); m_data[m_length - 1] = value; return *this; } friend std::ostream& operator <<(std::ostream& out, const intarray& arr) { for (int t = 0; t < arr.m_length; t++) { out << arr.m_data[t] << " "; } return out; } ~intarray() { if (m_data != nullptr) { delete[] m_data; } } }; int main() { intarray myarr{ 1,3,5,7,9 }; std::cout << myarr << std::endl; /*std::cout << myarr.resize(4) << std::endl; //for resize test. std::cout << myarr.resize(6) << std::endl;*/ //for resize test. std::cout<<myarr.insertbefore(10, 1)<<std::endl; std::cout<<myarr.remove(3) << std::endl; std::cout<<myarr.pushback(13) << std::endl; return 0; } --------------------------------------------- 작동은 제대로 됩니다만 , Debug 모드와 Release 모드 실행시 차이가 있습니다 . 위와같은 릴리즈모드에시 실행시에는 아무 에러창없이 실행되구요 위와같이 디버그모드서 실행시 디버그 에러가 납니다. 다만 , 실행결과에는 차이가없구요. 왜그런건가요?
- 미해결홍정모의 따라하며 배우는 C++
질문
예:) C에서 드디어 C++로 넘어왔습니다 ㅎㅎ 본격적으로 코딩테스트 준비해야지요 c++도 잘 부탁드립니다 ㅎㅎ 아주 간단한 실수를 했더라구요 제가 근데 이번에 오류가 나는데 구글링해보니까 속성-링커-시스템에서 콘솔을 윈도우즈로 바꾸라는데 윈도우즈로 바꿔도 똑같습니다.. 뭐가 문제일까요?
- 해결됨홍정모의 따라하며 배우는 C++
강의 토대로 연습
해서 plus2 함수와 minus2함수를 함수포인터를 one함수의 인자로 해서 하나의 함수로 하는 연습하고 있는데 함수가 함수를 리턴하는게 허용되지 않습니다 라고 오류뜨는데 도저히 모르겠습니다 도와주세요!
- 미해결홍정모의 따라하며 배우는 C++
29:45 namespace
29:45초에 // C++ 17 std #include<numeric> #include<algorithm> cout << "std::transform_reduce" << endl; { const auto sum = std::transform_reduce(std::execution::par, v0.begin(), v0.end(), v1.begin(), 0ull); } ///// std::transform_reduce ☞ namespace "std" 에 "transform_reduce" 멤버가 없습니다. std::execution::par ☞ '::'가 뒤에 오는 이름은 클래스 또는 네임스페이스 이름이어야 합니다. 라고 뜨는데, 어떻게 해결해야 하나요?? 헤더 numeric, algorithm 모두 include 했습니다.
- 미해결홍정모의 따라하며 배우는 C++
6.8 포인터와 정적배열 질문드립니다
예를 들어 int num[5]={1,2,3,4,5}; 에서 배열 num을 가리키는 포인터 변수를 아래와 같은 2가지 방법으로 선언 한다고 강의에서 학습했습니다 , 1. int *ptr=num; or 2. int ptr=&num[0]; 그래서 배열명=배열 첫번째 원소의 주소 이렇게 정리하려고 했는데, 생각해보니 함수에서 배열을 인수로 넘길때, Function(num); 이런 식으로 배열명으로 넘기잖아요? 아무리 생각해 봐도 함수 호출할때 인수로 넣는 배열명은 배열 첫번째 원소의 주소만 넘기는 게 아니라 배열 전체를 넘기는 거 같더라구요. (ex sizeof(num) 했을때, 배열명= 배열 첫번째 원소의 주소 라면 4byte일텐데 배열 전체 크기인 20 byte 가 나옵니다) 그렇다면 배열명=배열 첫번째 원소의 주소= 함수의 인수로 사용될 때는 배열전체(배열 그 자체)의 주소?? 라고 생각하면 될까요?
- 미해결홍정모의 따라하며 배우는 C++
promise와 async의 관계를 제대로 이해했는지 궁금해서 질문 드립니다.
1.promise라는게 future에게 값을 주겠다는 일종의 약속장치?? 라고 이해하면 되는 건가요?? 2.그렇다면 async는 future에게 약속도 해주고 쓰레드도 자동으로 해주는 일종의 진보된 함수 같은 격인가요?? 2.1 (2번이 맞다면) 그렇다면 promise를 사용하는 곳에는 그냥 async를 사용하면 되는 거 아닌가요? (이건 홍정모님이 분명 멀티쓰레딩은 상황에 맞게 사용하는거라고 말씀하셨지만 그래도 혼돈이 와서 다시 질문해 봅니다.) 매일 홍정모님 덕분에 배워가고 있습니다 감사합니다 :)
- 미해결홍정모의 따라하며 배우는 C++
상속을 이용한 템플릿(13.6) 부분 특수화하는데 있어 virtual을 사용해야 하는게 아닐까요?
template <typename T, int size> class StArr_BASE { private: T m_arr[size]; public: T* getArr() { return m_arr; } T& operator[](int idx) { return m_arr[idx]; } // 강의에서는 virtual 키워드를 사용하지 않았습니다. virtual void Print() { for (int idx = 0; idx < size; ++idx) { cout << m_arr[idx] << ' '; } cout << endl; } }; template <typename T, int size> class StArr : public StArr_BASE<T, size> { }; // 상속을 사용하여 char 타입에 대해 클래스를 통째로 특수화 하는 것을 회피 template <int size> class StArr<char, size> : public StArr_BASE<char, size> { public: // 재정의하여 사용합니다. void Print() override { for (int idx = 0; idx < size; ++idx) { cout << (*this)[idx]; } cout << endl; } }; 13.6 템플릿 부분 특수화에 대한 강의를 듣다가 궁금한 점이 있습니다. 아래 코드와 같이 상속을 통해 특정 method를 자식클래스에서 재정의를 할때는, 부모클래스의 재정의될 method에는 virtual 키워드를 붙이는 것으로 알고 있습니다. 물론 virtual을 유무에 상관없이, 원하는 데로 동작은 합니다. 하지만 자식클래스에서 재정의를 사용할려면 부모클래스에서는 해당 method에 virtual 키워드를 붙이는게 더 명확하게 표현하는것이 아닌가 싶네요.
- 미해결홍정모의 따라하며 배우는 C++
질문이요
class A { private: int value; public: int& getValue() const { return value;} }; getValue()함수 리턴타입을 레퍼런스로 했더니 return value; 이부분에 int& 형식에서 const int 형식 이니셜라이저로의 바인딩 참조에서 한정자가 삭제되었습니다 라고 나오는데 왜 이러는 건가요?
- 미해결홍정모의 따라하며 배우는 C++
1.3 변수와의 만남 강의 내용 질문드립니다
질문1) '객체: 메모리에 저장되어 있는 정보' 라고 말씀해 주셨는데 이 정보는 값을 의미하는 게 맞나요? 질문2) 만약 객체가 메모리에 저장되어 있는 값이 맞다면 리터럴과 무슨 차이가 있는지 궁금합니다. 질문3) 변수: 객체 저장공간의 이름 이라고 말씀해 주셨는데 그렇다면, 변수=객체가 저장된 메모리 명= 메모리 주소가 맞지 않을까요? 그런데 아래 코드에서 변수 x를 출력하면 왜 값이 나오는지 이해가 되지 않습니다. int ,float ,double,short 등 자주 사용되는 타입은 변수 선언 or 출력시 *(애스터리스크)를 생략하는 건가요? #include <iostream> int main() { int x=123;// 초기화, (*)가 생략됨? std::cout << x << std::endl; }
- 미해결홍정모의 따라하며 배우는 C++
v.push_back(std::move(str));
string str = "Hello"; 13:09 v.push_back(std::move(str)); 해준게 str의 주소 값을 넘겨준게 맞나요?
- 미해결홍정모의 따라하며 배우는 C++
‘unitptr_t’ was not declared in this scope
안녕하세요, 2.1강의의 예시코드를 작성했는데 이러한 에러가 뜹니다. 리눅스 사용중입니다. 인터넷찾아봤는데 어떻게 해결하는지 잘 모르겠습니다.
- 미해결홍정모의 따라하며 배우는 C++
2:58초 질문
결과를보면 constructor 0 constructor 1 destroyer 1 destroyer 0 이렇게 되는데 이는 곧 s2가s1보다 먼저 사라진다는걸 의미합니다. s2가 s1보다 먼저사라지는건 s1과 s2는 스택영역에 저장되는(쌓이는) 것과 관련있나요?
- 미해결홍정모의 따라하며 배우는 C++
s_value 초기화하는 부분이 이상한것 같습니다.
s_value는 클래스 내부에서 private로 선언되어 있는데 어떻게 외부에서 접근해서 초기화를 해줄 수 있는 건가요? setValue 등으로 접근이 가능하다고 하면 이해는 하겠는데 헷깔립니다.
- 미해결홍정모의 따라하며 배우는 C++
Static이 클래스 내에서 초기화 되지 않는 이유가 뭔가요?
C#에서은 클래스 내부에서 static 사용시 초기화가 가능한데 C++은 초기화가 되지 않도록 막은 이유가 있을까요?