월 24,200원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨홍정모의 따라하며 배우는 C++
형변환 관련 질문 있습니다
void* 에서 형변환을 하는 것을 보고 포인터에서 정수나 실수 등으로 형변환 또는 정수나 실수 등에서 포인터로 형변환 하면 어떻게 될까 싶어서 해봤더니 invaild type conversion 이라고 하면서 오류가 뜹니다 왜 그런건가요? 아래는 형변환을 시도해 본 코드입니다 int value = 3; int* ptr = &value; static_cast<int>(ptr); void* ptrr = &value; static_cast<int>(ptrr); static_cast<int*>(value); static_cast<void*>(value);
- 미해결홍정모의 따라하며 배우는 C++
Calc() 질문
앞부분에 Calc(10).add(10).sub(1).mult(2).print(); 요 코드가 나와있는데 자바의 익명클래스랑 개념이 비슷한건가요? 객체안만들고 일회성으로 사용하는 그런개념이죠?
- 미해결홍정모의 따라하며 배우는 C++
클래스와 구조체의 이름에 대한 질문
진짜 이건 왠만해선 질문글 안올릴려고 했는데.. 인터넷이랑 스택 오버플로우를 뒤져봐도 명쾌한 해답을 못찾아서 그런데요, 구조체 나 클래스를 선언한 변수 이름은 무얼 가르키는건가요? 주소값으로 출력해서 보면 주소값처럼 생긴 무엇인가 나오긴 합니다만... 이게 어떤걸 나타 내는건지 도통 알수가 없네요. 궁금합니다.
- 미해결홍정모의 따라하며 배우는 C++
소멸자와 delete 에 관한질문
배운 내용대로라면 소멸자는 동적할당 해제 즉 delete 가 실행되어야 소멸자가 호출이 된다라고 배웠는데 그렇다면 소멸자로 delete 를 호출할수 없는거 아닌가요. 제가 무언가 잘못 이해한거일수도 있겠네요 이거 질문하신분 있을거 같은데 명확하지가 않은거 같아 다시 이렇게 질문드립니다
- 미해결홍정모의 따라하며 배우는 C++
생성자 우선순위에 관한질문
강의 내용에 있어서 변수를 초기화하는 방법이 2가지 즉 매개변수에 직접 값을 대입하는 방법이랑 생성자를 이용해서 값을 초기화 하는 방법 이 2가지가 있다라고 배웠는데요 강의 내용에서처럼 두가지 모두 초기화되어있을때, 생성자에서 초기화된 내용을 우선시한다 라고 했는데 그렇다면, 순서가 매개변수에 있는 내용의 초기화 부분은 아얘 건너뛰고 생성자 부분의 초기화만 실행하는 것으로 이해하였는데 제가 이해한것이 맞는지 궁금합니다. 즉, 초기화를 2번할수는 없으니까 말이에요 또한가지 질문이 있는데요 이강의에서 나온 생성자 멤버 초기화 목록으로는 다른 클래스 뿐만 아니라 배열도 초기화가 가능한데, 전에 배운 고전적인 생성자 방식으로는 위의 두가지 즉 클래스와 배열을 초기화 할 수가 없더라고요. 혹시 방법이 있는건지 아니면 아얘 불가능한건지 알고싶습니다. 답변해주셔서 정말 감사합니다. 혹시몰라 예제코드도 첨부합니다. using namespace std; class Test { int num; public: //Test(const int& num) //{ // this->num = num; //} Test(const int& num = 0) :num(num) { } }; class Date { int m_year; int m_month; int m_date; int m_arr[5]{11,22,33,44,55}; Test num{1}; public: Date(const int& m_year = 1900, const int& m_month = 1, const int& m_date = 1) { this->m_year = m_year; this->m_month = m_month; this->m_date = m_date; } //Date(const int& year = 0, const int& num = 0) : // m_year(year), // m_month(11), // m_date(24), // num{num}, // m_arr{ 1,2,3,4,5 } //{ // m_year = 4535; //} void setDate(const int& m_year, const int& m_month, const int& m_date) { this->m_year = m_year; this->m_month = m_month; this->m_date = m_date; } void setYear(const int& m_year) { this->m_year = m_year; } int getYear() { return this->m_year; } int getMonth() { return this->m_month; } int getDate() { return this->m_date; } void copyThis(const Date& original) { this->m_year = original.m_year; this->m_month = original.m_month; this->m_date = original.m_date; } void printArr() { for (auto n : m_arr) { cout << n << " "; } cout << endl; } }; int main(int argc, char* argv[]) { //Date date = (2021, 11, 24 , 555); Date date(2021,555); cout << date.getYear() << " " << date.getMonth() << " " << date.getDate() << endl; date.printArr(); }
- 미해결홍정모의 따라하며 배우는 C++
초기화 질문
강의 중간에 인스턴스 초기화를할때 Date date { 2021, 11, 24 }; Date date ( 2021, 11, 24 ); 그리고 Date date = Date { 2021, 11, 24 }; 이렇게 있는데 Date date = { 2021, 11, 24 }; 이렇게도 초기화가 되는데... 무슨차이인가요? 그리고 번외 질문인데, C 같은 경우 함수의 매개변수로 구조체를 받을때 그 함수 내에서 받은 구조체의 값을 변경하고자 하면 구조체의 주소값을 받아야 했잖아요. C++ 같은경우 레퍼런스의 추가로인하여 구조체의 포인터를 사용할 일 없이 레퍼런스만을 이용하여 값을 변경이 가능한데, 이러면 구조체의 포인터는 사용할 일이 없는건가요?? 그냥 궁금해서 물어봅니다....
- 미해결홍정모의 따라하며 배우는 C++
vector을 이용한 무한반복(메모리 누수X)
Q1. 이렇게 만드는 것이 맞나요? Q2. private에서 자료형과 변수를 선언해 줄때, vector<int> arr = nullptr; 이라던지 vector<int> arr[] = nullptr; 처럼 작성하면 오류가 납니다. vector에서는 nullptr을 넣어줄 필요가 없나요? vector 강의 하신 6강쪽을 봤지만 이러한 예제는 따로 없더라고요.. ㅠㅠ
- 미해결홍정모의 따라하며 배우는 C++
vector 를 파라미터로 보낼때 질문
vector를 함수 파라미터로 보낼때 다른 정적배열이나 동적배열 과는 다르게 레퍼런스로 보내지 않으면 배열을 복사하는거같더라고요. 즉 레퍼런스로 보내지 않으면 함수 안의 내용을 바꿔도 진짜 값은 안바뀌네요 백터도 엄연히 배열아닌가요?? 벡터가 내부적으로 구현이 특별해서 그런걸까요? 테스트해보니 array 배열도 벡터랑 똑같네요
- 미해결홍정모의 따라하며 배우는 C++
Overflow 출력 관련 질문
안녕하세요. 항상 좋은 강의 감사드립니다. 실습을 진행 중 궁금한 사항이 있어 질문을 올리게 되었습니다. #include <iostream> #include <limits> short s = std::numeric_limits<short>::max(); cout << "max + 1: " << ss + 1 << endl; cout << "max + 2: " << ss + 2 << endl; s += 1; cout << "max + 1: " << ss << endl; 위 코드를 출력하면 다음과 같이 출력됩니다. max + 1: 32768 max + 2: 32769 max + 1: -32768 수의 최대 범위가 넘어갔는데도, 출력을 할 때 더 큰 수가 출력이 되는 이유가 변수에 저장을 안해서 그런 것 인가요? L-value와 R-value와 관계가 있는 것인지 궁금합니다. 감사합니다.
- 미해결홍정모의 따라하며 배우는 C++
vector를 struct를 사용하여 출력하려는데,,..
이러한 문제가 발생합니다 44번째 줄에서 print_vec(Fr_vec[1])로 출력하면 안되는 건가요..?
- 미해결홍정모의 따라하며 배우는 C++
cin.ignore() 와 getchar() 질문
C++ 에서는 버퍼를 지울때 getchar() 를 이용하는 거보다 cin.ignore() 함수를 사용하는게 더좋은가요? 아니면 멀쓰던지간에 상관이 없는지 궁금합니다!!
- 미해결홍정모의 따라하며 배우는 C++
uintpr_t와 void*의 차이점
안녕하세요. 2.1강 강의 1분 40여초 부터 나오는 예시 코드에서 (uintptr_t)를 사용해주는 이유가 궁금해서 질문 남깁니다. int i = -1; cout << (uintptr_t)static_cast<void*>(&i) << endl; cout << static_cast<void*>(&i) << endl; cout << &i << endl; 를 차례로 출력을 했을 때 7731616 0075F9A0 0075F9A0 가 출력이 되었는데요. &연산자가 해당 변수가 저장된 주소를 가리킨다고 이해하고 (void*)의 경우 Datatype을 모르는 상태에서도 주소를 가리킬 수 있는 포인터라고 알고 있는데요. (uintptr_t)의 역할이 무엇인지 궁금하여 질문 남깁니다. 16진수를 10진수로 출력하기 위해 사용하는 것인가요? 제가 참고한 자료는 https://stackoverflow.com/questions/40941825/understanding-void-against-intptr-t-and-uintptr-t https://stackoverflow.com/questions/1845482/what-is-uintptr-t-data-type 등이 있는데 아직 잘 이해가 되질 않네요...ㅠㅠ
- 미해결홍정모의 따라하며 배우는 C++
while 문의 static 질문
강의 중간에 있는 코드에서요 while (true) { static int count = 0; // cout << count << endl; count++; }저 static 으로 선언된 count의경우매 반복마다 초기화 하게 되는건데static은 한번만 초기화 할수있으므로원래 에러가 떠야 정상아닌가요?그냥 컴파일에서 한번 초기화되었으니다음 while 이 돌때는 그냥 무시하는건가요?
- 미해결홍정모의 따라하며 배우는 C++
typedef 를 사용한 구조체와 그외 질문들
안녕하세요 위에 코드에 주석을 이용해 질문 3개가 있는데요 첫번째로 C++은 C와 다르게 struct _name aa; 이렇게 안하고 그냥 _name aa; 이렇게 초기화도 되더라고요. 그럼 위와같이 typedef 를 활용한 struct는 C++에서는 더이상 사용되지 않나요? 두번째로 구조체 초기화시 = 와 {} 는 되는데 () 를 사용한 초기 화만 안되는데 따로 이유가 있을까요? 세번째로 구조체만 모아둔 헤더파일에 함수를 사용시 따로 cpp 파일에 함수를 빼놓는 법을 몰라 저렇게 헤더파일에 구현 해놓았는데 저렇게 사용해도 괜찮은지 궁금합니다. 질문글이 좀많네요;; 답변해주시면 감사하겠습니다!!
- 해결됨홍정모의 따라하며 배우는 C++
매개변수 관련 질문
강의 6:25 에서 doSomething() 의 매개변수 ptr의 주소값이 다 같은 값이 출력이 됩니다 저도 실행해보니 같은 값이 출력이 되고요 매개변수는 함수가 끝나면 사라지는걸로 아는데 왜 다시 호출될 때 같은 주소값을 가지는지 궁금합니다 (새로운 함수를 만들고 거기서 doSomething 함수를 호출하니깐 또 주소값이 바뀝니다)
- 해결됨홍정모의 따라하며 배우는 C++
vector를 사용하여 cin 으로 입력값을 받을려면
안녕하세요 독학으로 코딩을 배우려고 하니 어렵네요 간단하게 cin으로 학생숫자를 입력받고 숫자만큼 점수를 배열에 저장할려고 하는데 아래와 같이 작성시 런타임에러가 발생하네요 혹시 이유를 알 수 있을까요? #include <iostream> #include <vector> using namespace std; int main() { int a, numStudent; vector<int> score; cin >> numStudent; for (int j = 0; j < numStudent; j++) { //값 입력 cin >> a; score[j] = a; } for (int j = 0; j < numStudent; j++) { //값 출력 cout << score[j] << endl; } }
- 미해결홍정모의 따라하며 배우는 C++
이해안가는 부분 질문있습니다
앞 강의에서 최대 최소 구할때 하나하나씩 비교하는 것이랑 이번 선택정렬에서 하나씩 비교하는 것이랑 어떻게 다른건가요? for (int i = 0; i < length - 1; i++) { for (int j = i + 1; j < length; j++) { if (arr[i] > arr[j]) { // ? int temp = arr[j]; arr[j] = arr[i]; arr[i] = temp; } } printArr(arr, length); } 여기서 if(arr[i] > arr[j]) 하는것이 이해가 안가네요 앞선 강의에서 배열에서 최대를 구할때는 max라는 변수를 하나 만들고 거기에 max = scores[0]; 이런식으로 하나 대입하여서 if (max < scores[i]) { max = scores[i]; } 배열을 하나씩 비교하면서 크면 바꿔주고 이런식이라서 이번 선택정렬도 이런식으로 비교하면 될줄알아서 for (int i = 0; i < length - 1; i++) { int small = arr[0]; for (int j = i + 1; j < length; j++) { if(small > arr[j]) } } 이렇게 해봤는데 아예 이상하게 나와버리네요 ㅜㅜ
- 미해결홍정모의 따라하며 배우는 C++
isinf 함수 질문
보시다시피 위의 isinf 함수 부분에서 오류가 발생하고 있는데 저 0.0 부분을 교수님이 한것처럼 변수에 대입하여 실행하면 정상적으로 실행되는데 왜 직접 대입하면 오류가 발생하는 것인지 궁금합니다.
- 미해결홍정모의 따라하며 배우는 C++
visual studio에서 x86, x64 빌드가 정확히 어떤 차이가 있나요?
컴파일 타임, 런타임 때 어떤 차이가 있는지 궁금합니다 감사합니다
- 미해결홍정모의 따라하며 배우는 C++
15.3 코드 문제로 질문 있습니다.
15.3 이동 생성자와 이동 대입 강의를 봤는데요 코드를 다 안보여주시는데 어떻게 하나요?? 4:05분 보시면 메인 cpp파일에서 Timer.h헤더 보이고 메인 함수에서도 Timer timer; 객체 생성하시고 근데 정작 중요한 Timer.h헤더의 코드를 안보여 주시네요 제가 못찾는 건가요?? 제가 영상 보면서 멈춰두고 코드를 따라치면서 똑같이 해보는데요 영상 끝까지 봤는데도 Timer.h헤더의 코드를 안보여 주시네요 다 보고나서도 내가 놓쳤나 싶어서 계속 보는데도 안나와요.. 질문들 올려져 있는거 보면 다들 잘 따라하신거 같은데 왜 저만 못보는거죠..??;; #include"Timer.h" #include"Resource.h" #include"AutoPtr.h" using namespace std; AutoPtr<Resource> generateResource() { AutoPtr<Resource> res(new Resource(10000000)); return res; } int main() { streambuf *orig_buf = cout.rdbuf(); //cout.rdbuf(NULL); Timer timer; { AutoPtr<Resource> main_res; main_res = generateResource(); } cout.rdbuf(orig_buf); cout << timer.elapsed() << endl; return 0; }