월 24,200원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결홍정모의 따라하며 배우는 C++
std::move와 std::forward<T> 에 기능상의 차이가 있는지 궁금합니다!
안녕하세요 홍정모 선생님! Templetized 된 함수 내부에서 move sementics를 구현하기 위해서 std::forward<T> ~ 로 내부 함수들에게 변수를 넘겨주는 것과 double 앰퍼센드 함수 오버로딩시에 std::move() 로 넘겨주는 것에 성능차이가 있나요? 템플릿함수에 move 대신 forward를 써서 변수를 전달해주는 이유가 궁금합니다!
- 미해결홍정모의 따라하며 배우는 C++
출력
수업중 코드를 똑같이 받아 적었는데 이상한값만 출력이 계속 됩니다. 디버그를 하면 다른 값이 출력이 계속 되네요. 정확하게는 수업 후반에 나오는 부분특수화 상속한 부분에선 제대로 출력되지만 클레스 안의 있는 print함수에서는 제대로 작동이 되지가 않습니다. 그리고 코드를 옮겨적는데 동영상을 계속 옮겨 다녀야 되셔 불편하고, 효율성이 떨어지는 거 같은습니다. 혹시 코드를 올려두신곳이 있으신가요?
- 미해결홍정모의 따라하며 배우는 C++
왜 이럴까요,, 라이브러리 설정도 Mtd로 했는데,
(사진)
- 미해결홍정모의 따라하며 배우는 C++
뭐가 잘못된걸까요,,
(사진)
- 미해결홍정모의 따라하며 배우는 C++
변수 초기화할때 앞에 붙는 std::
안녕하세요. 코드를 아래와 같이 한번 바꾸어 보았습니다. #include <cstdint> int main() { int16_t i(5); int8_t myint = 65; int_fast8_t fi(5); int_least64_t fl(5); return 0; } std:: 를 붙이지 않아도, using namespace std;가 없어도 초기화가 오류없이 되더라구요. 초기화를 할 때, std::를 변수 앞에 붙일경우와 안붙일경우 차이가 있나요? 감사합니다.
- 홍정모의 따라하며 배우는 C++
실례합니다... 첫 페이지가 잘못되었군요
삭제된 글입니다
- 미해결홍정모의 따라하며 배우는 C++
동적 바인딩 정적바인딩..
#include <iostream> using namespace std; int add(int x, int y) { return x + y; } int subtract(int x, int y) { return x = y; } int multiply(int x, int y) { return x * y; } int main() { int x, y; cin >> x >> y; int op; cout << "add : 1, sub : 2, multi : 3" << endl; cin >> op; int result; switch (op) { case 0: result = add(x, y); break; case 1: result = subtract(x, y); break; case 2: result = multiply(x, y); break; } cout << result << endl; return 0; } #include <iostream> using namespace std; int add(int x, int y) { return x + y; } int subtract(int x, int y) { return x = y; } int multiply(int x, int y) { return x * y; } int main() { int x, y; cin >> x >> y; int op; cout << "add : 1, sub : 2, multi : 3" << endl; cin >> op; int(*func_ptr)(int, int) = nullptr; switch (op) { case 0: func_ptr = add; break; case 1: func_ptr = subtract; break; case 2: func_ptr = multiply; break; } cout << func_ptr(x, y) << endl; return 0; } 궁금한게 정적 바인딩 코드를 봐도 result의 값은 런타임에 op에 무엇을 넣느냐에 따라 달라지는데, 왜 이것 또한 정적인게 아닌지 궁금합니다. 즉, 이 둘의 명확한 차이점에 감이 안간다는 말 입니다.
- 해결됨홍정모의 따라하며 배우는 C++
왜 Stack은 작게 만들었는가..
안녕하세요. 덕분에 C++ 공부중인 학생입니다.궁금한 것이 있어 글을 쓰게 되었습니다.Stack이 더 빠르다면 애초에 크게 만들었으면 될 것을 왜 크기를 Stack은 작게 만들었고 Heap은 크게 만들었는지가 궁금하여 여쭤봅니다.떠오르는 이유는 물리적인 이유가 있는데,통신을 예로 들어서.. 전화가 잘 터지는 기지국 근처는 Stack , 잘 안터지는 먼 곳은 Heap 이 되는 것인가요?아니면 다른 이유가 있을까요?
- 미해결홍정모의 따라하며 배우는 C++
for-each 반복문에서 값을 바꾸기 위해서..
선생님께서 레퍼런스를 사용하라고 하셨는데, 왜 저는 바뀌어서 출력되죠?ㅠㅠㅠ 아래 코드처럼 작성하면 정상적으로 10이 출력돼요... 항상 좋은 강의 감사합니다~ const int fibonacci[] = { 0,1,1,2,3,5,8,13,21,34,55,89 }; for (int number : fibonacci) { number = 10; cout << number; cout << endl; }
- 미해결홍정모의 따라하며 배우는 C++
소멸자 관련 질문드립니다.
강의: 8.6 소멸자 destructor / 약 8분30초 안녕하세요. 매번 강의를 잘 보고 있습니다. 강의를 보던 중, my_int_arr(1000)의 소멸자가 언제 호출되는지 궁금하여 질문드립니다. my_int_arr가 while문 영역을 벗어나면서 사라지려고 할 때 소멸자가 호출되서 delete이 된다고 하셨는데요, while의 조건문이 true이기 때문에 my_int_arr가 항상 while문 영역 내에 있는게 아닌지 궁금합니다. my_int_arr가 계속 while문 영역에 있으므로 소멸자가 호출되지 않을 것 같은데 실제로 delete이 되는걸 보니 제가 잘못알고 있는 부분이 있는 것 같습니다. while문의 바디를 다 처리하고, while 조건문의 참/거짓을 판단할 때 while문 영역을 벗어난 거라고 봐야하나요?
- 미해결홍정모의 따라하며 배우는 C++
4.1강 namespace 안에 void함수 cout, endl undefine
#include <iostream> namespace work1 { int a = 1; void dosomething() { (문제 의 줄)>> cout << a += 3 << endl; } } //(질문) //여기서 오류나와서 namespace에서 꺼내보아도 void 함수에서 cout,endl을 찾을 수가 없습니다. 구글검색도 해봤지만 알 수가 없었는데 혹시 제가 무엇을 놓친걸까요? int main() { using namespace std; work1::a; cout << work1::a << endl; work1::dosomething; cout << work1::a << endl; //cout << work1::dosomething << endl; return 0; }
- 미해결홍정모의 따라하며 배우는 C++
헤더파일에서 함수바디를 따로 저장했을때 디파인 오류 가 납니다.
강의 내용 대로 헤더파일에 함수의 바디까지 모두 작성했을때는 별다른 문제는 없었습니다. 저는 교수님께서 말씀하신대로 헤더와 바디를 나눠서 작성하는게 정석이라 하셔서 분리하여 보았습니다. 그리고 메인파일에서doSomThing.h 파일을 명시하고 add 함수를 호출했을때 헤더파일과 바디파일을 타고타고 쭉들어가서 문제없이 실행될꺼라 예상했습니 다. 하지만 이경우에 add 디파인 오류가 떳습니다. 왜 그런걸까요? main.ccp --- #include "doSomeThing.h" int main() { add(1,2); } doSomeThing.h --- //#pragma once void doSomeThing(); doSomeThing.ccp --- #include "add.h" void doSomeThing() { add(1, 2); } add.h --- //#pragma once int add(int a, int b); add.cpp --- int add(int a, int b) { return (a + b); }
- 홍정모의 따라하며 배우는 C++
[1.12 헤더가드가 필요한 이유] 헤드와 바디를 나눠서 시도했을때 오류에 대한 질문입니다.
삭제된 글입니다
- 해결됨홍정모의 따라하며 배우는 C++
이 코드 마지막에 스택에 남은 정보들 다 출력하려면 어떻게하죠???
#include <iostream> #include <string> using namespace std; template <class T> class DynStack { private: struct StackNode { T value; StackNode* next = NULL; }; StackNode* top; public: DynStack() { top = NULL; } void push(T); void pop(T &); bool isEmpty(); }; // Member function push pushes the argument onto // the stack. template <class T> void DynStack<T>::push(T num) { StackNode *newNode; // Allocate a new node & store Num newNode = new StackNode; newNode->value = num; // If there are no nodes in the list // make newNode the first node if (isEmpty()) { top = newNode; newNode->next = NULL; } else // Otherwise, insert NewNode before top { newNode->next = top; top = newNode; } } // Member function pop pops the value at the top // of the stack off, and copies it into the variable // passed as an argument. template <class T> void DynStack<T>::pop(T &num) { StackNode* temp; if(isEmpty()) { cout << "The stack is empty.\n"; return; } else // pop value off top of stack { num = top->value; temp = top->next; delete top; top = temp; } } // member funciton isEmpty returns true if the stack // is empty, or false otherwise. template <class T> bool DynStack<T>::isEmpty() { if (!top) return true; else return false; } class Inventoryltem { private: long serialNum; // Serial number string manufactDate; // Manufacture date int lotNum; // Lot number public: // Default constructor Inventoryltem() { serialNum = 0; manufactDate = ""; lotNum = 0; } // Constructor Inventoryltem(long s, string m, int lot) { serialNum = s; manufactDate = m; lotNum = lot; } void setSerialNum(long s) { serialNum = s; } void setManufactDate(string m) { manufactDate = m; } void setLotNum(int lot) { lotNum = lot; } long getSerialNum() { return serialNum; } string getManufactDate() { return manufactDate; } int getLotNum() const { return lotNum; } }; int main() { DynStack<Inventoryltem> stack;// create stack Inventoryltem item; Inventoryltem item; // create inventory item object int ch;// Menu choice long serial;// Serial number string mDate;// Manufacture date int lnum; //lot number do { cout << "1. add a part.\n"; cout << "2. remove a part.\n"; cout << "3. Quit.\n\n"; cout << "choose one of them(1,2,3): "; cin >> ch; // Validate choice while (ch < 1 || ch > 3) { cout << "invalid number. Enter one of 1, 2, 3: "; cin >> ch; }; // Act on the user's choice. switch (ch) { case 1: cout << "\nadding a new part...\n"; cout << "Enter the serial number : "; cin >> serial; item.setSerialNum(serial); cout << "Enter the manufacture date : "; cin >> mDate; item.setManufactDate(mDate); cout << "Enter the lot number: "; cin >> lnum; cout << endl; item.setLotNum(lnum); stack.push(item); break; case 2: if (stack.isEmpty()) { cout << "it's empty.\n\n\n"; break; } else stack.pop(item); cout << "\nremoving a part...\n"; cout << "\nThis part was removed.\n"; cout << "\tSerial number: " << item.getSerialNum() << endl; cout << "\tManufacture date: " << item.getManufactDate() << endl; cout << "\tlot number: " << item.getLotNum() << endl; cout << endl; break; case 3: cout << "\nRemaining parts : "; break; } } while (ch != 3); return 0; }
- 해결됨홍정모의 따라하며 배우는 C++
7.5 다양한 반환 값들 (15:00~) 예제 코드 수정 요청
안녕하세요. 여러개의 값을 반환하는 방법 중 하나로 구조체 반환 함수를 설명해 주셨는데요. 예시의 구조체 반환 함수 몸체에 return 문이 없습니다. 질문 게시판을 보니 이 코드 관련 질문이 반복되어 영상이 수정되면 좋을 것 같아 말씀드립니다. 좋은 강의 감사드립니다. // 강의에서 사용한 코드 struct S { int a, b, c, d; }; S getStrct() { S my_s{ 1, 2, 3, 4 }; return my_s; // *** 강의에 없는 코드 *** } int main() { S my_s = getStrct(); return 0; }
- 미해결홍정모의 따라하며 배우는 C++
3.5강 관계연산자 복습 중 생긴 질문입니다.!
강의 예제 중 d1과 d2이 가지는 차이의 값이 궁금해서 setprecision을 이용해서 소수점 아래까지 출력을 하려고 했습니다. 그래서 해보면 d1은 setprecision의 값이 13, d2는 setprecision의 값이 14 일때부터 소수점 아래 숫자들을 출력했습니다. 질문은 어떠한 기준때문에 13 또는 14라는 값부터 소수점을 길게 출력하는지가 궁금합니다. 답변 해주시면 감사하겠습니다.!!
- 미해결홍정모의 따라하며 배우는 C++
[20:05] private member
안녕하세요. 지난 강의에서 설명해 주실 때 access specifier는 지정이 따로 안되는 경우 default로 private 지정이 된다고 설명해 주셨는데. 선생님 말씀에 따르자면 class First에 있는 다른 클래스 Second sec의 경우에도 private으로 봐야할 까요? 그리고 main함수에 있는 first fir constructor가 실행이 되려면 Second sec이 초기화가 먼저 되야한다고 하셨는데, 그렇다면 class first에 멤버로 있는 Second sec constructor가 초기화 되면, class Second에 멤버가 있다면(ex int x, int y), 이 멤버 또한 자동적으로 초기화가 되는 건가요?? 이 순서대로 연쇄작용이 일어나는 건가요? first fr constructor 실행 -> class first member인 Second sec contructor실행 -> class Second member 초기화 -> class first의 constructor실행 감사합니다.
- 해결됨홍정모의 따라하며 배우는 C++
5.2 조건문 if (13:21~) 예제 코드 수정 요청
안녕하세요. 예제 코드를 수정해야 할 것 같아 말씀드립니다. // 강의에서 사용한 코드 if (x >= 10) if (x >= 20) cout << "x is between 10 and 20 " << endl; 10 이상 20 이하 조건에 대한 코드이니 x >=20 이 아니라 x <= 20이 되어야 할 것 같습니다. 정말 좋은 강의를 만났다고 생각합니다. 감사하게 잘 보고 있습니다. ^^
- 해결됨홍정모의 따라하며 배우는 C++
형님 그 어떤 함수안에서 2차원배열 동적할당한다음에 해제할때요
삭제된 글입니다
- 미해결홍정모의 따라하며 배우는 C++
<< 오버로딩 시 const 유무에 따른 문제
안녕하세요 실습을 해보면서 << 연산자 오버로딩시 와 같이 Digit에 const 가 없으니 << 가 처음도 아닌 중간에서 에러가 났습니다. const 를 붙여주니 이 에러가 없어졌는데 어떤 이유에서 그런지 궁금합니다. 아래는 에러 코드 입니다. Error C2679 binary '<<': no operator found which takes a right-hand operand of type 'Digit' (or there is no acceptable conversion)