월 24,200원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨홍정모의 따라하며 배우는 C++
왜 Something(const Something& st_in)이 호출되나요?
print(something); 이면 Something something이 Something st에 복사가 되는 거라서 마치 Something st = something처럼 초기화가 이루어지는 것으로 보이는데 왜 copy constructor가 실행이 되나요?Something st = something은 곧 Something st{ something } 이고 생성자가 있으므로 Something st(something)처럼 copy constructor를 호출하는 것인가요?
- 미해결홍정모의 따라하며 배우는 C++
8.11 private static 멤버 변수
안녕하세요 강의를 수강하고 있는 학생입니다. cpp 에서는 클래스 안에 private으로 접근제어자를 설정한 변수에 대해서라도 static으로 선언해준다면 클래스::static멤버변수 로 호출을 할 수 있는건가요?? 그렇게 되면 private으로 선언한 이유가 궁금합니다! 감사합니다
- 미해결홍정모의 따라하며 배우는 C++
a || b && c || d
bool boolA = true; bool boolB = false; bool boolC = false; bool boolD = false; cout << boolA || boolB && boolC || boolD; //1 cout << boolA || boolB && (boolC || boolD); //1 cout << (boolA || boolB) && boolC || boolD; //0 cout << (boolA || boolB) && (boolC || boolD); //0 연산자 우선순위에 따라 &&이 먼저이고 ||가 다음이면 주석에 달아놓은 값으로 나와야하지 않나요? 실제로 디버깅하면 1111이 나옵니다. 무엇이 문제일까요?ㅠㅠ 추가적으로 저 4개의 cout 출력 코드 뒤에 각각 <<endl; 을 붙이면 오류가 뜹니다. using namespace std; 를 했는데 왜 그런 건가요?
- 미해결홍정모의 따라하며 배우는 C++
함수의 매개변수 변수 선언에 대한 질문
9분 경 강의에서 cout줄에 있는 함수의 작동원리를 볼 때 매개변수 num_a , num_b의 값들이 인수로 초기화 된다고 말씀을 하셨거든요 그런데 강의에서는 num_a = 1 , num_b = 2 와 같이 초기화가 된 상태로 나오는데, 똑같은 코드로 디버깅을 해보면 저같은 경우에는 num_a = 1 , num_b = 1570173296 과 같이 num_b는 가비지값이 나오게 됩니다. 위와 같은 과정이 int num_b ; num_b = 2 ; 와 같은 방식으로 선언이 된 후에 할당이 된다는 이야기 인데 함수가 작동되는 방식이 매개변수가 선언 된후 인수값들이 할당되는게 맞는 건가요, 아니면 매개변수가 초기화되는 것이 맞는 건가요? 후자가 맞는 것이라면 왜 강의와 다르게 나오는지 궁금합니다.
- 미해결홍정모의 따라하며 배우는 C++
casting 원리 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. casting 에 대해서 궁금한게 생겼습니다. 모든 date 는 메모리에 1과0으로 저장이 되는데 date type 의 차이는 저장된 메모리를 어떤 방식으로 출력하냐의 차이인가요? 예를들면 65라는 수는 char type, int type 모두 0000 0000 0100 0001 로 저장이 되지만 이를 출력할때 char type 으로 선언하면 아스키테이블을 거쳐서 A로 출력되는거고 int type 으로 선언하면 이진수계산을 통해 65로 출력되는 그런 형식인지 생각이 되서 casting 이라는게 강제로 메모리출력방식을 바꿔주는건가 궁금합니다. *1 00001011 000 1010 1011 0100 0000 0000 이렇게 저장된 long type 의 변수가 이진수로 저장이되던게 double type 으로 casting 하면 부호,지수,가수부분을 계산한 부동소수점수로 표현이되는지..?
- 미해결홍정모의 따라하며 배우는 C++
float 형 데이터가 메모리에 저장될때
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 첫번째 질문 float 형 데이터가 메모리에 저장될때 이진수를 정규화(?)시켜서 저장이 된다고 하는데(구글링했습니다) 쉽게 말하면 부동소수점수와 근사하는 이진수데이터를 메모리에 저장한다는 뜻인가요? set precision(17)로 float d=0.1 를 출력하면 강의에서와 같이 마지막소수점이 1로 나왔다는건 메모리에 저장되어있는수가 실제 0.1이 아닌 소수점 18번째 자리부터 반올림했을때 올라가는 0.1에 근사한수 인지입니다. 두번째 질문 구글링해보니 setprecision 은 정수부,소수부를 포함하여 고정된 n 의 너비를 가지게끔 입출력을 조작하는 함수라고 나와있습니다. 그런데 0.1 과 3.14159 를 비교하여 출력해보니 너비가 다르게 나옵니다. 정수부나 소수부가 0인경우 너비를 고려하지 않는건가요? 세번째 질문 double d = 0.1 을 선언하고나면 메모리에 0.1 에 근사하게끔 0과1로 메모리가 저장된다고 한다면 setprecision 을 적지않고 d 를 출력했을때 왜 0.1 이 출력되는건가요? 메모리에 저장되어있는 수를 꺼내는 원리가 아니라 내가 초기화시킨 값의 형식(적은 수의 모양 자체) 를 출력해주는 건가요?
- 미해결홍정모의 따라하며 배우는 C++
numeric_limit 함수 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를ㅇ 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. cout 으로 int 의 표현되는 최대정수를 구하기위해 numeric_limits<>::max() 를 출력할때 ()를 넣으면 정수가 출력되고 ()를 넣지않으면 다른게 출력됩니다. min, lowest 도 마찬가지인데 어떤 차이가 있는건가요?
- 미해결홍정모의 따라하며 배우는 C++
10:00 참조값 반환 질문
#include <iostream> using namespace std; int& getValue(int x){ int value = x * 2; return value;} int main(){ int& value = getValue(5); cout << value << endl; cout << value << endl; return 0;} 위 코드 실행시 첫번째 cout에선 10이 나오지만 두번째 cout에선 쓰레기값이 나옵니다. 위와같이 나오는게 참조값은 한번 사용시 값이 사라져서 그런건가요?
- 해결됨홍정모의 따라하며 배우는 C++
7:45 부근 질문있습니다.
B m_b는 Something과는 다른 class이고 instance 멤버가 private인데 어떻게 class Something에서 B m_b { 1024 }와 같이 초기화가 가능한지 궁금합니다.
- 미해결홍정모의 따라하며 배우는 C++
동적 할당 관련 질문입니다.
안녕하세요~ 이번 강의를 듣다가 동적 할당에 관하여 궁금한 점이 생겨서 질문드립니다~ 2분 47초경에 생성자에 초기화리스트로 { }가 들어온다면 어떻게 될지 궁금했습니다. 만약에 예를 들어 int *ptr = new int[0]; 처럼 동적 할당을 하게 되면 아무일도 일어나지 않는 것인가요? 만약 그렇다면 delete를 해줄 필요도 없는 것인가요?
- 미해결홍정모의 따라하며 배우는 C++
안녕하세요 교수님 이번 강의에 대한 문의를 드리려고 합니다.
안녕하세요~ 일단 질문하기에 앞서 교수님의 강의 정말 감사하며 잘 보고 있습니다. 제가 이번 강의를 들으면서 강의 내용에 의문점이 생겼습니다. 그래서 제가 생각한 방식을 말씀드리고 의견을 한번 여쭤보고 싶었습니다. 일단 5분 21초경에 복사생성자가 1번만 호출이 됩니다. 저는 여기서 dosomething이란 함수에서 class타입인 temp를 return해줄때는 왜 복사가 일어나지 않는지 궁금했습니다. 제가 생각한대로라면 복사생성자가 두번 호출되어야 하니까요. 그래서 디버거모드로 한번 돌려보았습니다. 그 결과 return을 해줄때 복사생성자가 호출된다는 것을 알게되었습니다. 그럼 왜 return값을 대입해줄때는 복사생성자가 호출되지 않았을까요? 생각해보았더니 return값이 rvalue라서 그런거 같다는 생각이 들었습니다. 그래서 만약 return값이 lvalue이면 해답을 알 수 있을 것 같아서 dosomething함수의 return 타입을 클래스 참조로 바꾸고 같은 조건으로 디버거 모드를 실행해보았습니다. 그 결과 함수 안에서 return할때는 복사가 일어나지 않았고(참조이기 때문에 당연하다 생각했습니다.) , result객체를 생성할 때(lvalue를 대입할 때) 복사 일어났습니다. 그래서 제 결론은 lvalue를 대입 할 때는 복사 생성자가 호출되지만 rvlaue를 대입 할 때는 함수의 return에서 이미 복사가 일어나고 변수에 그냥 대입 된다고 보았습니다. 여러번 생각해보았으나 이 과정 중에 제가 잘못 생각한 부분이 있는지 여쭤보고 싶습니다. 아직 부족한 점이 많아서 제 생각의 흐름에서 어디가 빵꾸났는지 알고 싶습니다. 긴 글 읽어주셔서 감사합니다.
- 미해결홍정모의 따라하며 배우는 C++
강의안(ppt 자료)을 어디서 얻을 수 있을까요?
안녕하세요! 학습과 관련없는 질문 죄송합니다. 강의안 자료를 어디서 구할 수 있을까요? 따로 필기하면서 듣고싶어 여쭙습니다. 감사합니다
- 미해결홍정모의 따라하며 배우는 C++
3분 17초에 null캐릭터 질문입니다.
안녕하세요~ 3분 17초경에 m_data가 가르키는 마지막 원소를 null캐릭터로 해주는데 그 바로 위의 for문에서 파라미터를 통해 받아온 source가 가르키는 마지막 원소인 널캐릭터를 대입해주기 때문에 안해주어도 상관 없는 것 아닌가요??
- 미해결홍정모의 따라하며 배우는 C++
(11:40)class안의 함수 접근
#include <iostream>#include<string>#include<vector> using namespace std; class Date { int _month; int _day; int _year; public: void setDate(const int& month_input, const int& day_input, const int& year_input) { _month = month_input; _day = day_input; _year = year_input; } int getDay() { return _day; } }; int main() { Date today; today.setDate(8, 15, 2022); cout<<today.getDay()<<endl; return 0;} setDate()는 public으로 지정한 다음 main()에서 접근을 했는데, getDay()함수는 아무 접근 지정자도 표시를 안 했는데 바로 main()에서 접근할 수 있는 이유가 무엇인가요? 따로 지정하지 않으면 private이 된다고 했는데, getDay()는 바로 사용할 수 있는 이유가 궁금합니다.
- 미해결홍정모의 따라하며 배우는 C++
static const 멤버 변수의 주소는 볼 수 없나요?
안녕하세요, 강의 듣던 중 궁금한 점이 있어 질문 드립니다. #include <iostream> using namespace std; class Something { public: static const int m_vlaue =1 ; int a; }; // int Something::m_vlaue = 2; int main() { Something st1; Something st2; cout << st1.m_vlaue << " " << st2.m_vlaue << endl; cout << &st1 << " " << &st2 << endl; cout << &st1.m_vlaue << endl; cout << &st2.m_vlaue << endl; return 0; } 위와 같은 코드를 작성했는데, 마지막에 static const m_value의 주소를 찍어보고 싶은데, 여기서 undefined reference to `Something::m_vlaue' 라는 컴파일 에러가 뜨네요 m_value의 주소는 st1,과 st2가 공유하고 있을 거 같아서 주소를 찍어보고 싶은데, const가 없는 상태에서만 컴파일이 되서 질문드립니다. :)
- 미해결홍정모의 따라하며 배우는 C++
[1:00] 생성자의 매개변수 문의
너무 간단한 것인데 혹시나 싶어 문의드립니다. 지금까지 공부한 개념으로 보면 생성자의 매개변수는 Animal(const std::string& name) 이어야 할거 같은데 Animal(std::string name) 으로 한 이유가 따로 있나요? 복사를 하기보단 참조가 더 효율도 좋은데 단순히 강의를 위해 쓸데없는 내용을 빼기위해 적으신건지 궁금해서 문의드립니다.
- 해결됨홍정모의 따라하며 배우는 C++
선언과 정의를 분리하는 이유가 뭔가요?
강의 8:27부터 말씀하시는 이유만으로는 선언과 정의를 굳이 왜 분리하는지 잘 모르겠습니다. 이런식으로 " - " 버튼을 통해서 정의를 숨겨버리면, 정의를 따로 분리하지 않아도 한눈에 보기 편하지 않나요? 헤더를 쓰는 이유는 메인 코드를 간결하게 하기 위함 아닌가요? 선언과 정의를 분리하여 헤더까지 간결하게 만드는 이유가 궁금합니다.
- 미해결홍정모의 따라하며 배우는 C++
&의 쓰임
*의 쓰임이 2가지(1. 포인터 선언 시 포인터임을 나타내는 표시, 2. de-referencing)로 나뉘어지는 것처럼, &의 쓰임도 2가지(1. reference선언 시 reference임을 나타내는 표시, 2. 주소)로 나뉘어진다고 생각해도 될까요? 예를 들어 void addOne(int &y) { cout << &y << endl;} 란 코드가 있을 때, int &y는 reference선언할 때와 같은 쓰임이어서 인자가 reference에 의해 들어오는 거라고 해석하는 것이고, cout 출력할때의 &y는 주소의 쓰임으로 해석하는 것이라고 해도 될까요?
- 미해결홍정모의 따라하며 배우는 C++
float 와 double
float 가 double 보다 사이즈가 작은데 왜 3.141592를 입력하면 둘 다 3.14159 로 똑같이 나오나요? double 이 더 많이 나와야하지 않나요? 3.141592를 전부 나오게 하려면 long double 로 사용해야 하나요?
- 미해결홍정모의 따라하며 배우는 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)); 로 작성하였습니다. 과연 잘한 것일까요? 그냥 첫번째 코드가 더 가독성이 좋다고 여겨지는 코드일까요? 그리고 두번째 질문입니다. 새로운 함수를 만들지 않는 이상, 강제형변환이 유일한 방법인가요?? 또한, 그렇다면 더 좋은 코드가 있을까요! 읽어주셔서 감사드립니다.