월 24,200원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결홍정모의 따라하며 배우는 C++
강의 18:13에서
18:13에서 강의에서는 다른 주소들이 무한대로 출력되는데 제가 실습을 했을 때는 모두 같은 주소들이 무한대로 출력이 됩니다. 이유가 무엇인가요?
- 미해결홍정모의 따라하며 배우는 C++
std::thread사용에 대한 질문
1. 외부에 있는 다른 프로세스를 실행시키는 방법이 있는지? 2. 1번 방법이 있다면, std::thread를 사용해서 외부에 있는 다른 프로세스를 실행시키면, 제어(thread 정지, 재시작)하는 방법이 있는지요.
- 미해결홍정모의 따라하며 배우는 C++
질문이 있습니다!
강의10:34부분처럼 cout<<name+i<<endl; 으로 출력을 해보았는데, 아래의 결과처럼 출력이 되었습니다. 여기서 혼란이 왔는데 char name[] = "Jack jack";에서 name은 int array[] = {1,2,3};에서 array와는 약간 다른 의미를 가지는 건가요?? (array는 출력하면 첫번째 byte의 주소를 출력하지만, name은 출력하니까 그대로 "Jack jack"이 출력되었습니다.) 다시말해서 name+1 => ack jack, *(name+1) => a가 되는 이유가 궁금합니다. (ack jack을 d-reference하면 a가 되는 이유가 궁금합니다.) #include<iostream> using namespace std; int main() { char name[] = "Jack jack"; const int n_name = sizeof(name) / sizeof(char); for (int i = 0; i < n_name; ++i) { cout << name + i << endl; } return 0; } Jack jack ack jack ck jack k jack jack jack ack ck k
- 미해결홍정모의 따라하며 배우는 C++
질문이 있습니다!
int array[] = {1,2,3}; cout<<array<<endl; 이렇게 하면 첫번째 byte의 주소가 출력되는데, int name[] = "Jack jack"; cout<<name<<endl; 이렇게 하면 그냥 Jack jack이 출력되고, char *ptr = name;을 한뒤 cout <<ptr<<endl;하면 name과 똑같이 Jack jack이 출력되는데 while문안에서 ++ptr은 실행이 되는데 ++name은 에러가 뜨는 이유가 뭔지 궁금합니다. 또 위에서 언급했다시피 cout <<ptr<<endl; 하면 Jack jack이 출력되는데 (이는 주소값이 아닌데) 그렇다면(++ptr-1)의 의미를 잘 모르겠습니다. (코드는 다른 질문자님의 코드를 참고했습니다.) #include<iostream> using namespace std; int main() { char name[] = "Jack jack"; char *ptr = name; cout << ptr << endl; cout << name << endl; while (true){ cout << *(++ptr -1); if (ptr == '\0')break; } return 0; }
- 미해결홍정모의 따라하며 배우는 C++
const 함수에 대한 질문있습니다
항상 교수님 덕분에 재미있게 공부하고 있는 학생입니다. 다름이 아니라 동영상 14분 30초 즈음에 const string& GetVal() const; string& GetVal(); Something s1; const Something s2; 가 있을때 s2의 getval 함수는 당연히 s2가 상수이므로 멤버변수들의 변경이 안되므로 const string& GetVal() const를 반환하는 것까지는 이해가 되었습니다. 근데 s1의 GetVal()을 선택하는 과정에서 s1은 상수가 아니지만 const string& GetVal() const로 받아서 멤버변수들의 값을 변경하지 않는것도 가능한데 왜 컴파일러는 모호성 오류 반환 대신에 2번째 nonConst함수를 선택하는건지 궁금합니다!! 항상 감사합니다 ♡(ŐωŐ人)
- 미해결홍정모의 따라하며 배우는 C++
static 멤버변수에서 인스턴스에서 값을 변경하면 멤버변수가 인스턴스에 끼치는 영향
안녕하세요 교수님 [04 : 17] 에서 2개의 인스턴스가 있을 때 Something st1; Something st2; st1.s_value = 2; 를 해서 2를 넣었는데 어째서 st2.s_value 값과 주소가 같아진건지 모르겠습니다. 인스턴스 마다 값을 할당받는것 아닌가요? 혹시 static을 써서 Something이란 class 메모리에 정적으로 멤버변수가 박혀서 그런건가요? Static을 쓴다면 아무리 많은 인스턴스들을 만들어도 s_value의 값은 정적인 값으로 되는 건가요?
- 미해결홍정모의 따라하며 배우는 C++
저 강사님 백터와 정적배열에관해서 질문있습니다....
현재 벡터까지 끝냈는데...듣다 보니깐 실무에서 벡터말고 정적배열을 굳이 사용할 일이 있나요? 초대형게임에서는 메모리관리가 워낙중요하니 정적배열을 통해 메모리를 최대한 타이트하게 관리해줘야하기 때문에 정적배열을 사용하나요? 뭔가 벡터를 배우고나니깐 그전에 정적배열에서 했던 delete반납과 nullptr 들의 고생들이 허무하게 끝나는거 같습니다.
- 미해결홍정모의 따라하며 배우는 C++
버블정렬 짜봤는데 더 좋은방법 있나요?
#include <iostream> using namespace std; void printArray(const int array[],const int length) { for (int index = 0; index < length; ++index) { cout << array[index] << " "; } cout << endl; } int main(void) { const int lengthe = 5; int array0[lengthe] = { 3,5,2,1,4 }; int max = 0; for (int reset = 0; reset < lengthe; reset++) { for (int i = 0, j = 1; (i < lengthe - 1) && (j < lengthe); j++, i++) { if (array0[i] <= array0[j]) continue; else if (array0[i] > array0[j]) { temp = array0[i]; array0[i] = array0[j]; array0[j] = temp; } printArray(array0, lengthe); } } return 0; }
- 미해결홍정모의 따라하며 배우는 C++
<34:05 > 10진수 추출시 아무것도 뜨지 않는 오류가 일어나는 이유.
각각의 추출되는 색깔 값을 char 타입으로 지정하고 그냥 10진수로 추출할 때 오류가 나는 이유는 무엇인가요? 왜 int로 캐스팅 할때는 정상적으로 표기가 되나요?
- 미해결홍정모의 따라하며 배우는 C++
for문 범위잡기
선택정렬과 버블정렬을 코드로 짜보면서 궁금증이 생겼습니다. 항상 배열( 배열속 숫자들의 순서)를 정해놓고 시작을 해서 코드를 짰는데 , 그래서 인지 for문의 범위가 다 다르게 코드를 짰습니다. 혹시 모든 배열(개수가 5개인)에 적용되는 코드가 있는지 궁금합니다. 계속 고민해봤는데, for문의 범위를 어떻게 해야할지 모르겠습니다. 뭔가 직접 손으로 정렬들을 해본 후 for문의 범위를 적는게, 주먹구구식으로 짜맞추는 느낌이 듭니다. 부족한 글이지만 저의 답답함이 잘 전달되었으면 좋겠습니다:) 감사합니다.
- 미해결홍정모의 따라하며 배우는 C++
singned 정수인지 unsigned 정수인지 구별은 어떻게 하나요?
안녕하세요 선생님 :) 예를 들어 어떤 프로그램의 코딩 라인 중에서 2진수를 사용하는 부분이 있을 때, 명시한 2진수 숫자가 10진수로 변환 될 때 signed가 되는지 unsigned가 되는지는 어떻게 구별하나요? (항상 유튜브에서 좋은 말씀과 여러 훌륭한 강의들을 제공해 주셔서 감사합니다^^ 더 화이팅 할게요!!)
- 미해결홍정모의 따라하며 배우는 C++
throw; vs throw e;의 차이가 궁금합니다.
/* 예외 클래스와 상속 */ #include <iostream> using namespace std; class Exception { public: virtual void report() const { cerr << "Exception report" << endl; } }; class ArrayException : public Exception { public: void report() const override { cerr << "Array exception" << endl; } }; class MyArray { private: int m_arr[5]; public: int& operator[] (const int& index) { //if (index < 0 || index > 4) throw - 1; if (index < 0 || index > 4) throw ArrayException(); return m_arr[index]; } }; void doSomething() { MyArray my_arr; try { my_arr[100]; //멤버함수에서 throw를 던져도 받을 수 있음. } catch (const int& x) { cerr << "Exception" << x << endl; } catch (Exception & e)// Exception & e = ArrayException(); { cout << "doSomething()" << endl; e.report(); //rethorw throw e; //하면 다형성이 풀림? //throw; } } int main() { try { doSomething(); } catch (Exception & e) { cout << "main()" << endl; e.report(); } return 0; } throw ArrayException()하고 두번의 catch문을 모두 Exception으로 받게 해놨습니다. 그런데 처음 catch에서는 다형성 성질에 맞게 자식클래스의 report를 실행했는데 throw e로 했을 경우에는 자식클래스의 report가 아닌 부모클래스의 report를 실행합니다. 거기다가 throw;로 했을 경우에는 정상적으로 자식클래스의 report를 실행합니다. 1. throw e;로 했을 경우에는 왜 다형성이 풀리는 건가요? 2. throw;랑 throw e; 랑 차이는 무엇인가요?
- 미해결홍정모의 따라하며 배우는 C++
함수 포인터 크기
double foo() { return 5.0; } int goo() { return 6; } int main() { std::function<int()> fcnptr; // int를 반환하고 매개 변수가 없는 함수 포인터 변수 fcnptr 선언 cout << sizeof(fcnptr) << endl; // 40 fcnptr = goo; cout << fcnptr(); return 0; } 함수 포인터도 함수의 주소를 기억하는 변수니까 4bytes를 차지하지 않을까? 싶어서 sizeof를 해봤는데 40이라는 수가 나오네요. 왜 40이라는 수가 나왔는지 궁금해서 메모리 영역, 컴퓨터 동작 원리 등등을 찾아봤지만 끝내 해답을 얻지 못했습니다. 40이라는 숫자가 어떻게 나온 것일까요
- 홍정모의 따라하며 배우는 C++
연산자 오버로딩 질문
삭제된 글입니다
- 미해결홍정모의 따라하며 배우는 C++
(재질문)피보나치 수열 std::vector와 iteration을 이용해 푸는데 오류가 발생합니다
코드 링크: https://onlinegdb.com/HkSbD5Df8 visual studio 상에서 실행은 되지만 위와같이 오류가 발생합니다 어떤 것을 고치면 될까요?
- 미해결홍정모의 따라하며 배우는 C++
값으로 전달에 대해 질문드립니다.
안녕하세요? using namespace std; void doSomething(int x) { cout << "In func " << x << " " << &x << endl; } int main() { doSomething(5); doSomething(6); int x = 6; cout << "In main " << x << " " << &x << endl; doSomething(x); // 6이 argument로써 parameter로 전달됨 doSomething(x + 1); return 0; } 결과 In func 5 010FF9F4 In func 6 010FF9F4 In main 6 010FFAC8 In func 6 010FF9F4 In func 7 010FF9F4 위 코드 진행과정이 1. doSomething(5)를 실행하면 매개 변수 x가 생성되고 값 5가 복사된다. 2. cout을 실행한다. 3. 매개 변수는 지역 변수이므로 doSomething함수가 종료되면서 사라진다. 4. doSomething(6)을 실행하며 위 과정을 반복한다. 이렇게 되는데, 3번에서 4번으로 넘어가면서 매개 변수가 사라지잖아요? 그런데 doSomething(6)을 실행하면 x의 메모리가 doSomething(5)에서의 메모리와 같고 인수가 무슨 값이 복사되든 메모리 주소가 동일한 결과를 얻었습니다. 제가 처음에 생각했을 때는 doSomething(6)이 실행되면서 또 매개 변수가 선언되니까 기존의 doSomething(5)와 다른 메모리 주소를 사용할 거라 생각했는데 그게 아니네요. 애초에 OS에서 인수값으로 무슨 값이 들어오든 너는 이 메모리 주소를 할당 해줄테니까 이 주소만써 이렇게 명령하고 그 메모리 주소를 기억하고 있는건가요? 아니면 x의 주소를 기억하는 포인터가 생성되면서 x는 함수가 종료되면서 사라지더라도 x의 메모리 주소를 기억하는 포인터를 통해 x의 주소를 기억해내는 건가요? 궁금한게 너무 많네요.. ㅜㅜ
- 미해결홍정모의 따라하며 배우는 C++
동적 메모리할당 질문 드립니다.
안녕하세요? using namespace std; int main() { int* ptr = new int{ 7 }; // OS로부터 받아온 4바이트짜리 메모리주소가 저장이 된다. cout << ptr << endl; cout << *ptr << endl; cout << &ptr << endl; delete ptr; // OS에 메모리를 돌려줌 //ptr = nullptr; cout << "Afer delete" << endl; cout << ptr << endl; //nullptr을 안해주면 가리키는 메모리 주소가 바뀌어 버린다. //cout << *ptr << endl; cout << &ptr << endl; // 포인터 변수를 삭제하는 것이 아니다. return 0; } 위 코드에서 ptr = nullptr을 해주지 않으면 cout << ptr을 했을 때 아예 다른 주소를 가리키게 되는데요. 실제로 위 코드를 돌리면 ptr :01480550 *ptr : 7 &ptr : 012FFA14 Afer delete ptr : 00008123 &ptr: 012FFA14 다음의 결과가 출력이 됩니다. 그럼 delete후에 ptr이 가리키는 주소는 어떤 주소인가요? 아무 의미 없는 주소인지 아니면 의미는 있지만 아직 배우지 않은 것인지 궁금합니다. 또 참조와 const 에서 궁금한 게 있습니다. 참조는 보통 메모리 값이 있는 l-value를 받잖아요. 근데 리터럴을 받기 위해서는 const int &ref = 6; 이런식으로 받으면 가능하다라고 강의에서 말씀하셨는데 위 문장이 어떻게 작동되는건지 자세하게 알고싶습니다. 참조는 객체의 별칭으로 사용되는 것 아닌가요? 위 문장은 그럼 누구의 별칭으로 사용되는 건가요? C++를 첫 언어로 공부 중인데 제 기준에서 쉽지 않다보니 궁금한 것도 이해 안 되는 것도 많은데 그 점이 너무 재미가 있네요.
- 미해결홍정모의 따라하며 배우는 C++
cout<< 연산자가 궁금해졌습니다
조건부연산자 강의 마지막에 괄호로 싸는 이유를 한번 생각해 보라고 하셔서 궁금한게 생겼습니다 cout뒤에 늘 붙는 <<연산자와 cin 에 붙는 >>연산자는 https://blog.naver.com/literate_t/221595486714 블로그 내 표에서 나오는 비트 왼쪽 쉬프트와 오른쪽 쉬프트 인가요? 그래서 <<연산자 먼저 처리될수 있어서 미리 괄호를 쳐 주는 것이죠?
- 미해결홍정모의 따라하며 배우는 C++
피보나치 수열 std::vector와 iteration을 이용해 푸는데 오류가 발생합니다
52번째 줄에서 error가 발생하는데 error의 의미를 잘 파악 못해서 해결을 못하고 있습니다 ㅠ 어떤 것을 바꾸면 해결될까요??
- 미해결홍정모의 따라하며 배우는 C++
연습문제 재질문입니다
#include <iostream> int main() { using namespace std; bool b; cin >> b; cout << std::boolalpha; cout << "Your input : " << b << endl; int num; cin >> num; if (num % 2) cout << "홀수" << endl; else cout << "짝수" << endl; return 0; } ---------------------------------------------------------- 자료형에 문제가 있다고 하셨는데 bool 자료형은 0이면 false고 그 외의 수는 true로 알고있었는데 이게 밑에 있는 num변수에 무슨 영향을 줬길래 0, 1을 제외한 다른 수를 넣었을때 짝수로만 나올까요? bool이 0이나 1말고는 받지 않아서 그런건가요? num은 따로 받는거라 위에 있는 b 변수랑 아무 연관 없는줄 알았는데......