월 24,200원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결홍정모의 따라하며 배우는 C++
숙제로 내주신 실습문제 중 pow의 강제형변환에 대한 질문이 있습니다.
매일 강의를 공부하며 실습문제까지 내주셔서 너무 재밌게 공부하고 있습니다. 이번 강에서 내주신 실습문제 unsigned int의 범위를 알아보는 코드를 작성하던 도중 cout << std::pow(2,sizeof(unsigned int)*8-1) << endl; 을 하면 4.29497e+09 가 출력되어서 구글링을 해보니 pow는 double형으로 casting하여 return 하는 함수라더군요. 그래서 강제 형변환을 시키려고 하였고 아래와 같은 코드를 작성하였습니다. #include <iostream>#include <cmath>#include <limits> int main(){ using namespace std; unsigned int s = 1; auto result = (unsigned int) (pow(2, sizeof(unsigned int) * 8)); cout << result << endl; cout << std::numeric_limits<unsigned int>::max() << endl; return 0;} pow 결과값을 unsigned int로 바꾸었다는 것을 보다 적시적으로 보이기 위해 unsigned int result = (pow(2, sizeof(unsigned int) * 8)-1); 보다는 auto result = (unsigned int) (pow(2, sizeof(unsigned int) * 8)); 로 작성하였습니다. 과연 잘한 것일까요? 그냥 첫번째 코드가 더 가독성이 좋다고 여겨지는 코드일까요? 그리고 두번째 질문입니다. 새로운 함수를 만들지 않는 이상, 강제형변환이 유일한 방법인가요?? 또한, 그렇다면 더 좋은 코드가 있을까요! 읽어주셔서 감사드립니다.
- 미해결홍정모의 따라하며 배우는 C++
namespace 관련 질문드리고 싶습니다.
using namespace std; 로 이미 std를 안써도 되는 것이라고 이해하고있었습니다. 그러나, 강의에서는 cout << std:: pow(2,sizeof(short)*8-1)-1 <<endl; 과 같이 std:: 로 std namespace공간에 있는 pow를 사용하겠다고 하고있습니다. 굳이 안써도 되는 부분이라고 생각했는데, 제가 어떤 부분을 잘못생각하고 있는건가요? 그리고, visual studio를 설치함에 따라 딸려오는 모든 라이브러리는 std namespace 공간에 정의되어있는건가요?
- 미해결홍정모의 따라하며 배우는 C++
연습문제로 내주신 문제 풀어보았습니다. 더 효율적인 방법이 있었을까요?
기본적으로 '몇 번'이 아니라, '여러 번'입력 받는다는 것이 조건이었기에 반복문을 사용하는 방법이 가장 먼저 떠올랐습니다. 하지만, 아직 반복문은 학습 진도가 나가지 않았기에 3개의 입력받을 변수를 선언하고 문제를 풀었습니다. 본 강의까지의 내용 선에서 가장 효율적인 코드일까요? 아니면, 더 나은 코드가 있을까요! #include <iostream> using namespace std; int addTwoNumber(int n_a, int n_b, int n_c){ int sum = n_a + n_b + n_c; return sum;} int main(){ int num_a, num_b, num_c; cin >> num_a >> num_b >> num_c; cout << addTwoNumber(num_a, num_b,num_c); return 0;}
- 미해결홍정모의 따라하며 배우는 C++
변수의 메모리 주소- 실행할 때마다 새로운 메모리 주소에 변수가 할당되어지는데 그 이유가 뭔가요??
#include <iostream> using namespace std; int main(){ int x = 1;//Initialization x = x + 2; cout << &x << endl; return 0;} 예를 들어서, 이러한 코드를 빌드 후 실행시켰을 때 00CFF960 이란 메모리 주소값이 출력됩니다! 그리고 다시 한 번 실행 시키게 되면 001DF724이라는 첫번째 주소와는 다른 주소값에 메모리 공간을 할당 받은 것으로 나옵니다! 왜 그런건가요!
- 미해결홍정모의 따라하며 배우는 C++
[1:55] int getCents() vs int& getCents() 문의
핵심부분만 발췌해서 적으면, [1] int getCents() const { return m_cents;} [2] int& getCents() { return m_cents;} [3] void operator + (const Cents& c1, const Cents& c2) { cout << c1.getCents() + c2.getCents(); } [4] int main() { cout << cents1.getCents() << endl;} ------------------------------- 기본이해된부분 -이해가 맞을까요?) ① [1] 은 객체가 const로 생성되었을시 const가 붙은 멤버함수만 사용할 수 있고, [3]은 매개변수로 const 객체 c1을 받아들였으므로 [1]의 함수를 호출. ② [2] 의 함수는 일반 객체가 들어왔을시 호출되며 m_cents의 참조를 반환, 따라서 [4]의 cents1.getCents()의 주소는 동일함. ------------------------------- 질문 1. [3]의 기본연산자에서 굳이 매개변수로 const를 뭐하러 받나요 ? 제가알기로 함수의 매개변수로 const참조를 쓰는 가장큰이유는 r-value도 참조할 수 있기 때문인데, 이경우에는 클래스 객체를 받아오므로 상수일 일도 없지않나요? const 매개변수를 쓰지않으면 더이상 [1]의 const 멤버함수도 필요 없지 않나요??(정말.. 오래 고민하다 해결되지 않아 적어서 ㅠㅠ 조금만 자세히 설명해주시면 정말 감사해요 ㅠㅠ) 위 코드에서 const를 쓰지않으면 생기는 문제를 조금만 자세히 적어주시면 정말 감사합니다
- 미해결홍정모의 따라하며 배우는 C++
stl 디버깅 관련 질문있습니다.
안녕하세요. 강의 잘 듣고 진행하고 있는 프로젝트에 잘 적용해 보고 있습니다. 특히 std::vector를 잘 쓰고 있습니다. 질문은 vector 사용에 오류가 있을때 사용한 곳이 아닌 vector 함수 내부에서 오류 메시지가 뜨니 어디서 사용한 vector가 문제였는지 알기 어려운 경우가 있습니다. 다른 stl 함수들도 마찬가지구요. 혹시 이런 경우 문제가 되는 위치를 쉽게 찾을 수 있는 노하우가 있을까요?
- 미해결홍정모의 따라하며 배우는 C++
strcat 질문드립니다.
#include <iostream>#include <cstring> using namespace std; int main() { char source[] = "Copy this!"; char dest[50]; strcpy_s(dest, source); cout << source << endl; cout << dest << endl; strcat_s(dest, dest); cout << dest << endl; cout << source << endl; return 0;} strcat_s(dest, dest)를 해도 Copy this!Copy this! 로 잘 나올지 궁금해서 실행해 봤는데, 런타임 에러가 떴습니다. buffer is too small이란 에러가 무엇을 뜻하나요? 메모리 공간이 부족하다는 건가 싶었는데, dest의 최대 크기가 50이므로 부족할 이유도 딱히 없는 것 같고 런타임 에러의 원인이 궁금합니다.
- 미해결홍정모의 따라하며 배우는 C++
9:05 변수 count에 대해
변수 my_var과 count 모두 namespace a에 선언했는데 왜 count만 namespace std에 존재해서 오류가 나나요 ? 명확히 이해하지 못해 질문 드립니다 !
- 미해결홍정모의 따라하며 배우는 C++
namespace 관련 질문입니다.
안녕하세요~ 이 강의 38분 40초대처럼 헤더파일에 namespace와 그 안에 변수를 정의해서 각 cpp파일에 include해주는 것은 잘 알겠습니다. 하지만 똑같은 조건에서 namespace안의 변수를 const로 하지 않았을때 각 cpp파일에서 include를 하면 충돌이 일어납니다. 이는 서로 다른 cpp의 namespace가 서로 외부참조를 할 수 있다는 의미인가요? (영향을 주지않는다고 생각한 영역끼리 충돌이 일어났습니다.)
- 미해결홍정모의 따라하며 배우는 C++
6-4 선택정렬
6-4 선택정렬 10분 11초 부근에서 직접 해보라고 하셔서 강의를 보기전 직접 해보았습니다. 그리고 성공비슷하게 했으나 뭔가 이상해서 질의를 드려봅니다. 알고리즘은 사진의 윗부분 주석과 같이 순차적으로 정렬되어야함이 맞으나, 제가 짠 코드에서는 콘솔창과 같이 정렬이 되네요. 뭔가 중간 단계가 건너뛰고 최종결과가 나오는 것처럼요. 하지만 배열사이즈를 바꿔보고 숫자를 늘려봐도 최종결과는 오름차순으로 정확하게 정렬이 됩니다. 이러면 맞다고 봐야하는 걸까요?
- 해결됨홍정모의 따라하며 배우는 C++
7:45 부근 질문있습니다.
교수님께서 원하면 sorting을 중간까지만 할 수 있다고 하셨습니다. std::sort(my_arr, my_arr+3); 그래서 이런 식으로 하면 작동이 될 줄 알았는데 my_arr은 array 달리 변수명이 포인터가 아닌가봅니다. 어떡하면 중간까지만 sorting을 할 수 있나요?
- 미해결홍정모의 따라하며 배우는 C++
이해가 잘 가지 않습니다..도와주세요
교수님께서 if 구문에서 smallestIndex=currentIndex 코드를 작성하시고 서로 봐뀐다라고 표현 하셨는데 이것은 대입아닌가요...?
- 미해결홍정모의 따라하며 배우는 C++
구조체 선언후 초기화 질문하고싶습니다.
#include <iostream> using namespace std; struct Person{ string name; int age; double height; float weight; }; int main() { Person me; me = {"Saram", 22, 1.79, 65.2f}; //me.age(26)오류 발생 me.age(26); me.age = 26; //OK return 0; } 구조체타입 변수를 선언후에, direct initialization으로 맴버변수 초기화를하고 실행하면 오류가 발생하더라구요. 반면에 me.age = 26 이처럼 대입연산자를 사용하게될경우 문제없이 맴버변수를 초기화할수있었습니다. 저의 질문은 구조체 맴버변수를 초기화할때 direct initialization 방법을 사용하면 안되는것인가요?
- 미해결홍정모의 따라하며 배우는 C++
빈칸을 0으로 채우는 반복문 만들기 예제
5-5 반복문에서 5 0 0 0 0 5 4 0 0 0 5 4 3 0 0 5 4 3 2 0 5 4 3 2 1 을 구현한 코드입니다. 정말 많이 고민해서 짠 코드이지만, 5라는 숫자로 하드코딩을 하고 while문이 아닌 for문과 if문까지 사용해서 만든 코드입니다. 혹시 while문 만으로 효율적으로 짤수있었던 방법이 있을까요? #include <iostream> using namespace std; int outer_count = 5; while (outer_count >= 1) { int inner_count = 5; for (int i = 0; i < 5; i++) { if (inner_count >= outer_count){ cout << inner_count << " "; } else { cout << "0 "; } inner_count--; } cout << endl; --outer_count; } return 0;}
- 미해결홍정모의 따라하며 배우는 C++
하위 네임스페이스에서 상위 네임스페이스의 함수에 접근할 수 있는 이유?
MySpace1안의 InnerSpace라는 하위 네임스페이스에서MySpace1의 함수인 doSomething(int a, int b)을 호출해보았습니다.InnerSpace에서 MySpace1의 함수에 접근할 수 있는 이유가 뭔가요?main에서 함수를 호출하는 원리와 같은가요? namespace MySpace1{ int doSomething(int a, int b); namespace InnerSpace { int my_function() { cout << doSomething(3, 4) << endl; return 0; } } int doSomething(int a, int b) { return a + b; }}
- 미해결홍정모의 따라하며 배우는 C++
reference 반환 부근 질문 있습니다.
8:31초 부근부터 int & getValue(int x) { int value = x * 2: return value; } 이렇게 들어가는데 이 함수가 어떻게 작동하는 것인지가 궁금합니다. 함수가 분명 int& 형이므로 참조형 값을 반환해야 되는데 반환하는 value는 int 형이니 혼란스럽습니다. 또 교수님께서 참조형 변수는 무조건 초기화가 필요하다고 하신 적이 있으신데 value 값이 결정되기도 전에 int&형이 선언이 되는 부분도 이해가 잘 가지 않습니다. 강의 주제보다는 함수라는 것 자체에 대해 이해도가 부족한 데서 나오는 의문 같은데 검색을 해도 잘 안나오네요. 답변해시면 감사하겠습니다. 읽어주셔서 감사합니다.
- 미해결홍정모의 따라하며 배우는 C++
다차원 배열을 출력하는 for문에 관해 질문이 있습니다.
7:14부터 교수님께서 for문을 이용하여 다차원 배열을 출력하시는데요, 그곳에서 cout<<row[r][c]<< 라고 하십니다. 저는 r1 r2 r3가 int 포인터 여서 004FF864 와 같은 정수 값을 가지므로 row는 결국 [ 004FF864 , 005AA890, 0000BF92] 처럼 1차원 배열이다 라고 이해하였는데 갑자기 cout에서 row를 2차원으로 사용해 버려서 혼란스럽습니다. 혹시 보충 설명 가능하신 분 계실까요? 읽어주셔서 감사합니다.
- 미해결홍정모의 따라하며 배우는 C++
String 타입 연산
string answer = ""; answer = s[s.length() / 2 - 1]; answer = answer + s[s.length() / 2]; string answer = ""; answer = s[s.length() / 2 - 1] + s[s.length() / 2]; 위에거는 제대로 나오는데 아래거는 "?"로 나오네요. 차이점이 무엇일까요?
- 미해결홍정모의 따라하며 배우는 C++
void 함수와 매개변수
#include <iostream> using namespace std; int addTwoNumbers(int a, int b){ int sum = a + b; return sum;} void printSum(int sum){ cout << "The sum is " << a << endl;}int main(){ int sum = addTwoNumbers(3,4); printSum(sum); return 0;} 질문있습니다. void 함수는 전달되는인자와 함수에서 받는 매개변수도가없다고 이해했는데 위에 코드와 같이 작성하면 잘 작동이되는것같아서요. void타입 함수에 인자를 전달하는것은 나쁜습관인가요?
- 미해결홍정모의 따라하며 배우는 C++
9.2강 << 연산자 오버로딩 강의 질문입니다.
다음은 9.2강에서 나오는 코드입니다.#include <iostream>using namespace std;class Point{private: double m_x, m_y, m_z;public: Point(double x = 0.0, double y = 0.0, double z = 0.0) : m_x(x), m_y(y), m_z(z) {} double getX() { return m_x; } double getY() { return m_y; } double getZ() { return m_z; } // friend 전역 함수 friend std::ostream& operator << (std::ostream& out, const Point& point) { out << "( " << point.m_x << " " << point.m_y << " " << point.m_z << " )"; return out; }};int main(){ Point p1(0.0, 0.1, 0.2), p2(3.4, 1.5, 2.0); cout << p1 << " " << p2 << endl; return 0;} 저는 연산자 오버로딩 함수가 매개변수로 const Point& point 를 받기 때문이라고 생각했지만 const를 지워도 같은 오류가 나옵니다. 오류와 별개로 코드를 실행하면 정상적으로 작동합니다. 질문 : 비주얼스튜디오 2022에서 위와 같은 오류가 뜨는데 원인을 모르겠습니다.