월 24,200원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결홍정모의 따라하며 배우는 C++
int getCents() const 함수와 int& getCents()함수의 차이
동전갯수를 합하는 코딩에서 int getCents() const 함수와 int& getCents()함수는 리턴값이 모두 m_cents로 같은데 무슨 차이가 있나요?
- 미해결홍정모의 따라하며 배우는 C++
10.3 집합관계 질문있습니다.
cout << lec1 << endl; cout << lec2 << endl; lec2.study(); cout << lec1 << endl; cout << lec2 << endl; 집합관계로 넘기기 전에 구성관계로만 코드를 작성한 후 코드 실행이 되지 않습니다 위의 cout에 빨간 밑줄이 그어지면서 error C2280: 'std::basic_ostream<char,std::char_traits<char>>::basic_ostream(const std::basic_ostream<char,std::char_traits<char>> &)': 삭제된 함수를 참조하려고 합니다. std::basic_ostream<char,std::char_traits<char>>::basic_ostream' 선언을 참조하십시오. std::basic_ostream<char,std::char_traits<char>>::basic_ostream(const std::basic_ostream<char,std::char_traits<char>> &)': 함수가 명시적으로 삭제되었습니다. cout이 삭제된 함수를 출력한다는게 문제인 것 같습니다. lec1.registerStudent(Student("Dash", 1) ); 메인에서 이런식으로 익명객체를 넘기는게 문제인거 같기도하고(익명객체는 다음줄에서 바로 없어진다고 하셨으니까 그 생각을 해봤습니다) 생각해 볼 수 있는 문제가 뭐가 있을까요? 어디가 삭제되었다는 건지 어떻게 찾아야 할지 모르겠습니다.
- 미해결홍정모의 따라하며 배우는 C++
질문이 있습니다
교수님이 작성하신대로 코드를 써보고 디버깅을 해보았습니다. 하지만 만약 배열의 크기가 1000이 넘어간다고 생각하면 1000번이 넘는 함수 호출을 사용하게 되는 것인데, 이러면 stack overflow가 생길 수 도 있겠다라는 생각이 들었습니다. 혹시 이런 경우에는 반환 값이 최적화 되어 컴파일러가 stack overflow를 방지하는지 궁금합니다.
- 미해결홍정모의 따라하며 배우는 C++
8.7 this 포인터와 클래스의 구조에 대해 질문있습니다.
강의에서 Simple 클래스에 s1(1), s2(2); 로 초기화 후 주소를 찍어서 서로 다른 주소가 나오는 것을 확인 했습니다. 그것을 아래 그림으로 나타낸 것입니다. 제가 궁금한 것은. 첫째 , 클라스에서 찍어낸 객체(instance)의 구조가 아래와 같이 되어 있는지 궁금합니다 둘째, 아래와 같이 되어 있다면 i d라는 멤버 변수와 setID라는 멤버함수는 s1과 s2에 메모리가 잡혀 있는 것입니까? 셋째, this 포인터가 왜 필요한 것입니까? 1번지 안에 1번지 id, 1번지 setID가 다 들어가 있는데 바로바로 접근 할 수 있는 것 아닙니까? 넷째, 객체를 100개 찍어내면 (예를 들어 1~100번지까지 객체가 생성되면) id라는 멤버변수와 setID라는 멤버함수의 주소가 100개 잡히는 것입니까?
- 해결됨홍정모의 따라하며 배우는 C++
동영상 플레이속도
플레이 속도 조절 옵션이 사라져서 안보이네요.. ios iPadmini쓰고있는데.. 아시는분 계실까요??
- 홍정모의 따라하며 배우는 C++
동일예제 연습
삭제된 글입니다
- 미해결홍정모의 따라하며 배우는 C++
9.8 형변환 질문이 있습니다.
강의에서 operator int() 와 operator Cents() 이렇게 함수를 선언하는데 선언에서 반환형이 없는데 return이 어떻게 알맞게 int, Cents 로 반환이 되는거죠? 그리고 Cents cents = dollar 이렇게 대입을 해줬는데 cents에서 어떻게 dollar를 알아서 형변환을 해서 넣어주는건지도 많이 당황스럽습니다. 제 생각에는 Cents cents = Cents(dollar) 이렇게 해줘야 된다고 생각하는데..c++를 배우는데 c++를 유독 사용자가 신경써야할 것이 많다고 느꼈는데 이렇게 신경을 안써도 자동으로 해주는게 조금 낯설어서 이렇게 질문드립니다. #include using namespace std; class Cents { int m_cents; public: Cents(int cents = 0) { m_cents = cents; } operator int() { cout << "cast here" << endl; return m_cents; } }; class Dollar { private: int m_dollars = 0; public: Dollar(const int& input) : m_dollars(input) {} operator Cents() { return Cents(m_dollars * 100); } }; void print(const int& input) { cout << input << endl; } int main() { Dollar dol(2); Cents cents = dol; print(cents); return 0; }
- 미해결홍정모의 따라하며 배우는 C++
4분40초~4분50초에서
발생하는 문제점이 함수 안에 초기화된 value가 함수 호출 이후 지워져 main안의 int *value는 할당되지 않은 메모리를 가리키는 포인터가 되기 떄문에 문제가 발생하는 건가요?
- 미해결홍정모의 따라하며 배우는 C++
9.4 강 오버로딩에서 friend operator<와 멤버함수operator<
강의에서 써주신 부분에서 friend를 쓰셨는데 bool operator<(const Cents& c2)를 통해 멤버함수로 바꿔주고 두개를 다 사용할때 어떤게 실행될까 했는데 bool operator<이 실행되더라구요? friend는 멤버함수 operat<이 없을때 실행되는거 같은데 혹시 이러한 우선순위에 대해서 찾아볼려고 하는데 혹시 키워드가 있는 내용인건가요? #include <vector> #include <iostream> #include <algorithm> using namespace std; class Cents { private: int m_cents; public: Cents(const int& input = 0) : m_cents(input) {} int getCents() const { return m_cents; } int& getCents() { return m_cents; } friend bool operator == (const Cents& c1, const Cents &c2) { return c1.m_cents == c2.m_cents; } friend bool operator<(const Cents& c1, const Cents& c2) { cout << "friend인가?" << endl; return c1.m_cents < c2.m_cents; } bool operator<(const Cents& c2) { cout << "어떤게 실행되나?" << endl; return m_cents < c2.m_cents; } friend bool operator>(const Cents& c1, const Cents& c2) { cout << "friend인가?" << endl; return c1.m_cents > c2.m_cents; } friend std::ostream& operator<<(std::ostream &out, const Cents& cents) { //멤버함수로 안되나? out << cents.m_cents; // 한푼도 없을때 참이 나오도록 구현 return out; // 하는 이유는 chaing할려는 것 이러면 cout<<Point<<... 이렇게 연속적으로 쓸수 있다. } friend std::istream& operator>>(std::istream& in, Cents ¢s) {//입력을 받아 수행해야하므로 const 하면 안된다. in >> cents.m_cents; return in; } }; int main() { vector<Cents> arr(20); for (int i = 0; i < 20; i++) { arr[i].getCents() = i; } std::random_shuffle(arr.begin(), arr.end()); for (auto ele : arr) cout << ele << " "; cout << endl; std::sort(arr.begin(), arr.end()); for (auto ele : arr) cout << ele << " "; cout << endl; return 0; }
- 미해결홍정모의 따라하며 배우는 C++
질문이 있어서 올립니다
처음에 int **dynamicArray = new int *[row]; 에서 이미 초기화가 되어 있어서 dynamicArray[col] = new int[col];에서는 int *dynamicArray[col] = new int[col]으로 쓰지 않고 그냥 대입 하는 건가요?
- 미해결홍정모의 따라하며 배우는 C++
12 : 45 경 bool형 매개변수
bool형 매개변수를 굳이 int &number가 아니라 int number로 해서 printNumbers 함수에서도 bool (*check_fcn) (const int)로 해도 값이 출력이 되는데 꼭 포인터를 사용해야 하나요?
- 미해결홍정모의 따라하며 배우는 C++
8:25 경에 말씀하신 연산자 우선순위
제가 잘 이해를 못했는데 우선순위가 바뀌지 않는다는 것이 보통 c에서 * 가 +보다 우선순위가 높은데 커스텀 곱하기 커스텀 +도 이러한 규칙을 간다는 뜻인건가요? 아니면 *보다 +가 우선순위가 낮고 + 보다도 우선순위가 낮다는게 custon + 연산자 인건가요? 예를들어서 int + custom * custom 이런 식이 있다고 했을때 c++에서 기본자료형인 int의 +연산자보다 custom으로 한 *연산자가 우선순위가 더 낮다는 의미인건가요? (int+custom) * custom 이렇게 된다는 의미인지.. 좀 모호해서요
- 미해결홍정모의 따라하며 배우는 C++
16:01 endl관련 질문이 있습니다
16:01경에 endl이 monster.h와 position2d.h에 두번 중복되었다고 하셨는데 이게 mon1.m_name 이후에 줄바꾸고 pos2d.m_x 가 나와야 되는거 아닌가요? 근데 결과창에서는 mon1.m_name, pos2d.m_x, pos2d.m_y가 한줄에 다 써지고 이후에 endl이 적용이 되던데 왜 이런지 궁금합니다 사진도 첨부했습니다
- 미해결홍정모의 따라하며 배우는 C++
char 배열의 주소를 알고 싶습니다
for문으로 char형 배열의 주소를 알아보려고 했는데 출력결과가 이렇게 나옵니다. cout 때문에 이렇게 나오는 것 같은데 어떻게 하면 char형 배열의 주소를 알 수 있을까요?
- 미해결홍정모의 따라하며 배우는 C++
질문있습니다!
혹시 여기서 sizeof()함수를 이용해 크기를 출력했을 때 왜 8바이트로 로 나오는지 알 수 있을까요??
- 미해결홍정모의 따라하며 배우는 C++
8.12 강 friend 관련 질문
4: 42초 경에 void doSomething(A& a, B& b) 함수를 각각 A와 B에 friend 함수로 선언을 해주었는데요. 여기서 궁금한게 생겼습니다. A 입장에서 friend 해준 doSomething함수가 A만을 다룰 때는 상관이 없지만 B까지 다루는데 어째서 허용이 되는지가 궁금합니다. 제가 강의를 보고 생각한것은 A입장에서 doSomething 함수가 뭘하던지 그리고 어떠한 매개변수를 받는지 상관을 안할테니 내꺼만 사용할 수 있도록 허용해줄테니 그다음은 doSomething 니가 알아서 해라 인가요? 음.. 그러니까 a,b라는 사람에게 dosomething이라는 사람이 무언가를 할려고 허락받는것을 각각 a,b에게 허락받는다고 생각하면 될까요? A입장에서는 자신의 것만 허용해준다고?
- 미해결홍정모의 따라하며 배우는 C++
함수 위치 질문!
c++에서 함수를 정의할 때 반드시 main()함수 위에다 정의해야 하나요??
- 미해결홍정모의 따라하며 배우는 C++
질문입니다..!
14.3강의 10:03 보다가 질문드려요. class Exception { public : void report() {cerr << "Exception report" << endl;} }; class ArrayException : public Exception { public : void report() {cerr <<"Array exception" << endl;} }; class MyArray { private : int m_data[5]; public : int & operator [] (int index) { if(index < 0 || index >=5) throw ArrayException()} } void doSomething() { MyArray my_array; try {my_array[100];} catch(ArrayException & e) { cout << "doSomething() " << endl; throw e; } } int main() { doSomething(); try { doSomething();} catch (ArrayException & e) { cout << "main()" << endl; e.report(); } 이렇게 doSomething()함수 안에 catch(ArrayException & e)이 정의되어 있는 상태에서 e를 다시 rethrow를 해주고 실행시키면 main()함수의 첫 번째 doSomething()이 실행되고 디버깅 에러가 발생합니다. 아마 e를 다시 예외처리해주지 못하는것 같은데,왜 main()함수에 정의 된 catch (ArrayException & e)로 예외처리를 하지 못하고 에러가 나는 건지 궁금해요
- 미해결홍정모의 따라하며 배우는 C++
random shuffle이 안되는데 이유를 모르겠습니다.
#include <iostream> #include <vector> #include <algorithm> using namespace std; class Cents { private: int m_cents; public: Cents(int cents = 0) { m_cents = cents; } int getCents() const { return m_cents; } int& getCents() { return m_cents; } friend std::ostream& operator << (std::ostream& out, const Cents& cents) { out << cents.m_cents; return out; } }; int main() { vector<Cents> arr(20); for (unsigned i = 0; i < 20; ++i) { arr[i].getCents() = i; } std::random_shuffle(begin(arr), end(arr)); for (auto& e : arr) { cout << e << " "; } cout << endl; return 0; } 강의 내용 그대로 친 것 같은데 random 셔플부분만 std에 존재하지 않는다고 계속 에러나네요.
- 미해결홍정모의 따라하며 배우는 C++
같은 함수를 두 번 정의했을 때 에러가 뜨는 건 식별자 문제인가요?
제가 이해한 바로는, 이미 한 번 같은 이름으로 메모리 공간이 할당되었는데 다시 같은 이름이 쓰이게 되면 충돌 같은 게 일어나 에러가 뜨게 되는 것 같은데 이렇게 되는 게 맞나요? 아니면, 컴파일러가 이 상황 자체를 비정상적이라고 인지해서 프로그래머에게 알려주는 건가요? 또, 어떤 local scope 안에서 같은 이름으로 변수 또는 함수가 여러 번 선언되었을 때에도 같은 원리로 컴파일 에러가 뜨게 되나요?