월 24,200원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결홍정모의 따라하며 배우는 C++
Functor 를 쓰는 이유는 뭔가요~?
안녕하세요Functor 를 쓰는 이유는 뭔가요~?함수처럼 구현할수 있다는것 외에 장점이 궁금합니다.속도가 더 빠르다던가, 소스의 유연성이 올라간다던가?...감사합니다.
- 미해결홍정모의 따라하며 배우는 C++
질문
4:48 에 "operator<< " 를 멤버함수로 만들 수 없다고 하시고그 이유에 대해 첫번째 파라미터가 std::ostream& out 이어서 그렇다고 하셨는데, 좀더 자세하게 설명해주실수 있으실까요~?
- 미해결홍정모의 따라하며 배우는 C++
vscode에서 환경 설정
안녕하세요. 맥 vscode에서 환경을 설정해주고 있는데 질문글에 올라온 링크를 찾아보니c/c++: edit configuration(ui)에 들어가서 설정을 해준 뒤,c_cpp_properties 파일을 만들어줘야 하는 것을 알게 되었습니다.그런데 제가 검색했을 때는 edit configuration이 뜨지 않는 상황입니다..혹시 어떻게 해야하는지 알 수 있을까요? 참고로 extension에서 c/c++과 code runner는 모두 설치하였습니다.
- 해결됨홍정모의 따라하며 배우는 C++
선택정렬
void printArray(int array[], int length){for (int index = 0; index < length; ++index){cout << array[index];}cout<<endl;}int main(){int arr[] = { 3,5,2,1,4 };printArray(arr, 5); for (int i = 0; i < 4; i++){int smallest_index = i;for (int current_index = i + 1; current_index <5; current_index++){arr[smallest_index] = (arr[smallest_index]>arr[current_index]) ? arr[current_index] : arr[smallest_index]; }int temp = arr[smallest_index];arr[smallest_index] = arr[i];arr[i] = temp; printArray(arr, 5);}} 다음 코드를 실행하면 제대로 된 오름차순 형태의 선택 정렬이 나타나지 않고3521415214112141111411114이렇게 나옵니다. 숫자가 swap되는 부분이 잘못된 것 같은데 어느 부분을 고쳐야 할까요?
- 미해결홍정모의 따라하며 배우는 C++
선언, 정의 부분 파일을 분리할 때 (1.11강)
안녕하세요.강의 영상 1.11에서 3분 15초 부분의 내용과 관련하여 궁금한 점이 있습니다. // main.cpp #include <iostream> #include <cstdio> using namespace std; int add(int a, int b); int main() { cout << add(1, 2) << endl; return 0; }// add.cpp int add(int a, int b) { return a + b; } 저는 맥 vscode에서 실행하고 있고,강의 영상과 같이 add 함수의 정의와 선언 부분을 분리한 후, main.cpp 파일을 실행하였더니 에러가 떴습니다.add.cpp 내의 add 구현 부분이 링킹이 되지 않은건가 하여 main.cpp파일에 #include "add.cpp"를 하였는데 정상적으로 실행이 되었습니다. 그런데 찾아보니 #include "add.cpp" 자체가 어색하다고 하는데,, 뭔가 다른 방법은 없는지 알고 싶습니다! 어쩔 수 없이 vscode로 따라가다보니 중간중간 어려움이 생기네요..감사합니다.
- 미해결홍정모의 따라하며 배우는 C++
바보같은 질문 드립니다.
안녕하세요.3:00 영상 초반에 클래스 외부에 add함수를 작성한 예제를 보여주셨는데, 해당함수는 레퍼런스로 c1 , c2 , c_out 을 인자로 받고 있습니다.레퍼런스로 받을경우 그 인스턴스의 메모리상 주소값을 그대로 받아오기 때문에 c.m_cents 처럼 private 에 속하는 멤버변수도 직접 접근이 가능해야 되는거 아닌가요...?레퍼런스로 인자를 받았다면 객체 그 자체로 private 영역에 접근이 가능해야될것 같은데,getter , setter 함수를 사용해서 private 변수에 접근해야되는 이유를 모르겠습니다ㅠ void add(const Cents &c1 , const Cents &c2 , Cents &c_out) { c_out.getCents() = c1.getCents() + c2.getCents(); }
- 해결됨홍정모의 따라하며 배우는 C++
클래스 내에 클래스 멤버 변수 선언 시 ()와 {}의 차이
class Something { private: int some; public: Something(const int &in_some) : some(in_some) {} void print() { cout << some << endl; } }; class Fraction { private: int nom; int denom; Something frac_some{ 3 }; // uniform init public: Fraction(const int &in_nom, const int &in_denom) : nom(in_nom), denom(in_denom) {} void print() { cout << nom << " " << denom << endl; frac_some.print(); } }; int main() { // Fraction frac(1, 2); Fraction frac{ 1, 2 }; frac.print(); return 0; }위 코드처럼 Something frac_some{ 3 }; 으로 uniform init을 하면 코드가 동작합니다.그러나 아래처럼 direct init을 하면위와 같이 오류가 발생합니다.어떤 차이가 있는 것일까요? main에서 아래처럼 두 가지 방법을 다 해보았을 때는 문제가 없었습니다main에서 Fraction frac(1, 2);을 하는 것과,클래스 내에서 멤버 변수를 선언할 때,Something frac_some(3);을 하는 것이 다른 동작인가요? 항상 감사드립니다.
- 미해결홍정모의 따라하며 배우는 C++
friend 키워드에 대한 개념이 안잡힙니다.
안녕하세요.아래와 같은 코드가 있다고 가정했을때,첫번째 operator(friend 키워드가 없는)는 에러표시를 하고두번째 operator(friend 키워드가 있는)는 정상 컴파일이 됩니다.friend 키워드에 대한 강의도 앞에서 보았고,'private 멤버 함수에 대한 접근이 가능하도록 해준다' 는 생각과 operator 코드 작성간의 상관관계가 무엇인지 모르겠습니다 ㅠ// 아래 함수 정의에선 해당 오퍼레이터 함수에 인자값이 너무 많다고 하고, std::ostream& operator << (std::ostream &out, const Point& point) { }// friend 키워드를 붙일경우엔 정상 컴파일이 됩니다. friend std::ostream& operator << (std::ostream &out, const Point& point) { }
- 미해결홍정모의 따라하며 배우는 C++
6.18 2분 47초
안녕하세요? 혹시 여기서 왜 C의 주소를 출력했는데 이상하게 나오고(한자 같은 게 나오고), 나머지 float는 문제없이 출력되는지 궁금합니다ㅠㅠ
- 미해결홍정모의 따라하며 배우는 C++
<6.19 다중포인터와 동적 다차원 배열> 이중 포인터임에도 불구하고 포인터의 주소값을 보유하고 있지 않음
int** matrix = new int* [row] 은 결국에는 row개의 포인터변수를 저장할 수 있는 공간을 만들어주고, 그 중 첫번째 요소의 주소값을 matrix가 가지게 된다는 것으로 이해했습니다. 하지만 아직도 정확히 이해가 안가는 부분이 있어 어리석은 질문드립니다.가정 1:제가 이해하기로는 이중 포인터 역시 포인터이기 때문에 다른 포인터의 주소값 을 가지는 변수입니다. 그러면 int** matrix = new int* [row] 같은 경우에도 row개의 포인터변수의 주소값 을 담아야하지 않습니까?하지만 matrix[0] 을 출력하였을때 (*matrix) 저는 그 포인터 변수의 주소값이 아닌 그 포인터 변수가 담고 있는 주소값이 출력됨을 확인할 수 있었습니다. int** matrix = new int* [row] 이 경우의 이중포인터는 " 이중 포인터는 다른 포인터의 주소값을 가르킨다" 라는 어떻게 보면 정석적인 정의와 다르게 사용된다고 보는게 맞습니까? (포인터 변수들을 보유하는 배열) 이중 포인터가 사용됬음에도 불구하고 matrix가 가지고 있는 값이 첫번째 요소(포인터)의 주소값이 그 포인터 자체가 들어갔기 때문인가요?
- 미해결홍정모의 따라하며 배우는 C++
unsigned int in for loop
for (unsigned int i = 9; i >= 0; --i) {cout << i << endl;} 5.7 강의 마지막에 선생님께서 이렇게 하면 오버플로가 발생할 수 있다고 하시는데 이건 왜 발생하나요? 0에서 멈추기 때문에 오버플로가 발생 안 할 것이라고 생각 들어서요...ㅠ
- 미해결홍정모의 따라하며 배우는 C++
문자열 포인터, 인티저 포인터
인터저로 포인터 정의하면 예를 들어서int a[] = {1,2,3}하고a만 출력해보면 a가 사실상 포인터이기때문에 첫번째 항의 주소만 출력되는데문자열 포인터에서char b[] = "jack"에서똑같이 b만 출력하면 왜 j의 주소가 출력이 안되고 jack이 다 나오는 건가요 ?
- 미해결홍정모의 따라하며 배우는 C++
NULL, nullptr, \0 헷갈립니다!
마지막에 풀어보라고 하신 문제 푸는데while break조건으로*ptr == nullptr*ptr == \0*ptr == NULL이렇게 3가지에서 2.는 이해가 가는데요,a.1했을때 안되는 이유하고 b. ptr == nullptr 하면 뒤에 이상하게 나오는 이유하고 c. nullptr이 포인터상에서 아예 없는값을 의미하는지 궁금합니다.d. 또 3번에서는 NULL이 문자열에서 아예 없는값을 의미하는게 맞는지 궁금합니다.
- 미해결홍정모의 따라하며 배우는 C++
string length
string a("Hello, World");cout << a.length() << endl;이렇게 하면 12가 나오는데여기서 12는 빈칸(Hello, 와 World 사이에 있는 것)이 포함된 건가요 아님 World뒤에 있는 nullptr이 포함되어서 12인가요?Hello,는 6글자 World는 5글자인데 12가 나온 게 헷갈려서요..
- 미해결홍정모의 따라하며 배우는 C++
오류
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 이 오류는 어떤건가요?
- 미해결홍정모의 따라하며 배우는 C++
실행 방법
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.CTRL + F5 (start without debugging)을 하게되면main_chapter11.cpp가 실행되는게 아니라 계속 source.cpp 파일이 실행됩니다.변경하려면 어떻게 해야할까요?clean solution을 하면 되는걸까요?
- 미해결홍정모의 따라하며 배우는 C++
비쥬얼 스튜디오 같은계정 내용공유?
제가 노트북으로도 하고 데스크탑으로도 비쥬얼스튜디오 사용하는데요, 노트북에서 한걸 이어서 데스크탑에서도 하고 싶은데 내용 공유(?) 같은건 안되나요 ? 윈도우 계정은 같은걸 쓰고 있습니다
- 해결됨홍정모의 따라하며 배우는 C++
inline이 들어가면 실행이 안 되는데 이유가 뭔가요?
//Calc.h #pragma once #include <iostream> class Calc { private: int m_value; public: Calc(int init_value); Calc& add(int value); Calc& sub(int value); Calc& mult(int value); void print(); };//Calc.cpp #include "Calc.h" inline Calc::Calc(int init_value) : m_value(init_value) {} inline Calc& Calc::add(int value) { m_value += value; return *this; } inline Calc& Calc::sub(int value) { m_value -= value; return *this; } inline Calc& Calc::mult(int value) { m_value *= value; return *this; } inline void Calc::print() { std::cout << m_value << std::endl; } //main.cpp #include "Calc.h" int main() { Calc cal(10); cal.add(10).sub(1).mult(2).print(); Calc(10).add(10).sub(1).mult(2).print(); return 0; }이렇게 했는데요..Calc.cpp에서 inline들을 다 빼버리니까 실행은 되는데 빼야지만 실행이 된다고 설명은 안 하신 거 같은데빼야지만 실행이 되는 게 맞는 건가요 ? 그 이유가 무엇일까요 ? ..
- 미해결홍정모의 따라하며 배우는 C++
새로운 프로젝트 만들어서 하는데 실행이 안되요
수업에 있는 코드 따라하려고 새로운 프로젝트(새로운 소스파일 말고) 아예 만들어서 실행 시켰는데 전에 만들었던 프로젝트에 있던 int main부터 시작하더라구요 디버깅해보니까 이거 왜이런거죠 ? 저는 새로운 프로젝트만 실행시키고 싶은데
- 해결됨홍정모의 따라하며 배우는 C++
공부방식
제가 강의를 듣고 있는데 너무 내용이 많아서요 ..저는 문제풀이를 하면서 해야 궁극적으로 실전능력이 는다고 생각하는데 다듣고 하면 앞에거 다까먹을것 같고 어떻게 활용해야 하나요 ?