월 24,200원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결홍정모의 따라하며 배우는 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++
공부방식
제가 강의를 듣고 있는데 너무 내용이 많아서요 ..저는 문제풀이를 하면서 해야 궁극적으로 실전능력이 는다고 생각하는데 다듣고 하면 앞에거 다까먹을것 같고 어떻게 활용해야 하나요 ?
- 미해결홍정모의 따라하며 배우는 C++
강의 자료
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 유튜브 무료강의 영상에서 보면 무료 강의자료가 있던데 이 강의는 강의자료가 따로 없는거 맞을까요?
- 미해결홍정모의 따라하며 배우는 C++
a.out
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. a.out 디렉터리로 이동해서 터미널에서 ./a.out 을 치라고 하는 의미를 모르겠습니다. a.out으로 들어가면 이렇게 뜹니다.
- 미해결홍정모의 따라하며 배우는 C++
맥북 visual studio code 에서 헤더파일은 어떻게 만드나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. visual studio code에서는 헤더파일을 어떻게 만드나요?
- 미해결홍정모의 따라하며 배우는 C++
맥북 visual studio code 링킹
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 말씀해주신대로 g++ add.cpp main.cppclang++ add.cpp main.cpp 2가지 다 해도 안됩니다.... 어떻게 해야할까요?윈도우 노트북을 사야할까요?공부하고 싶은데 맥북 visual studio code로는 따라가기가 너무 힘드네요....