월 24,200원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨홍정모의 따라하며 배우는 C++
수업 중 궁금한점이 있습니다.
public: char* m_data = nullptr; int m_length = 0; public: MyString(const char* source = "") ... }; int main() { MyString hello("Hello"); cout << (int*)hello.m_data << endl;수업중 코드의 일부분인데 m_data라는 문자형 포인터 변수를 동적할당해서 문자열을 받는 코드입니다. 메인함수에서 동적할당된 m_data의 주소를 찍어보려고교수님께서 (int*) 를 써서 주소를 정수화 했질문:(int) 와 (int*) 의 차이점이 무엇인가요? 다른 강의시간에 비슷한 개념을 언급해주셨는데 어느 강의에서 언급하셨는지 기억이 안나네요.
- 미해결홍정모의 따라하며 배우는 C++
라이브러리자체가 이해가 되지 않습니다.
흠.....라이브러리라는게 visual studio설치할 때 같이 딸려오는 여러 기능이나 자료를 정의해 놓은 파일인건가요??정의를 찾아보니까 API를 기반으로 대상 환경(플랫폼)에서 바로 실행될 수 있도록 모듈화된 프로그램 모음이다. 라이브러리는 혼자서 동작하는 완전한 프로그램이 아닌, 특정한 부분 기능만을 수행하도록 제작된, 컴파일되어 기계어의 형태로 (또는 대상 플랫폼에 따라서는 바이트코드로) 존재하는 프로그램이다 라고 는 나오는데 대상환경(플랫폼)은 visual studio이고 여기에 설치되어 있는것들일까요? 그리고 얘들이 있어야지만 #include <iostream>으로 끌어다 사용할 수 있는게 맞나요? 표준라이브러리>namespace>std 순서로 있다고 생각해도 무방할까요?
- 미해결홍정모의 따라하며 배우는 C++
마지막 예제 질문
#include <iostream>using namespace std;int main() {cout << ((true && true) || false) << endl;cout << ((false && true) || true) << endl;cout << ((false && true) || false || true) << endl;cout << ((14 > 13 || 2 > 1) && (9 > 1)) << endl;cout << !(2314123 > 2 || 123123 > 2387) << endl;return 0;} 마지막 예제에서, 위와 같이 조건식을 통째로 괄호로 싸주거나, 끝에 endl없이 출력해야 빌드가 되네요.예를들어,cout<<(true&&true)||false<<endl;은 error C2563: mismatch in formal parameter list에러가 뜹니다.cout << ((true && true) || false) << endl;또는cout << (true && true) || false;로 코딩해야 빌드가 돼요.현상만 보고 추정하기로는 endl함수가 1개의 인자만 받아야해서 그런거 같은데 맞나요?? 에러 내용이 정확히 뭔지 설명 부탁드려요
- 미해결홍정모의 따라하며 배우는 C++
증감연산자 위치에 따른 수행 순서 질문입니다.
int a = 1, b = 10;int z3, z4;z3 = (++a, a + b);cout << a << " " << b << " "<< z3 << endl;cout << endl; a = 1, b = 10;z4 = (a++, a + b);cout << a << " " << b << " " << z4 << endl;cout << endl; 증감연산자가 앞에 붙는 z3는 a증감을 먼저 수행하고, a+b 연산을 수행하고, 그 값을 z3에 대입하는 것이니 이해했는데요. 증감연산자가 뒤에 붙는 z4는 a는 그대로 있고, a+b를 수행하여 그 값을 z4에 대입하고, 그 뒤에 a증감 수행하는게 아닌가요?여전히 z4도 12가 나오네요. 증감연산자가 뒤에 붙는 경우 연산이 후순위로 되는데, 그 범위가 ;로 끝나는 라인까지라고 생각해서 지금까지 다 맞아왔는데 이 예문에서는 그게 아닌 것 같습니다. 증감 연산자 순서 범위가 정확히 어떻게 되나요?
- 해결됨홍정모의 따라하며 배우는 C++
단항 연산자 오버로딩에서 return 부분에 질문이 있습니다.
Cents operator-() const { return Cents(- cents_); }저 리턴부분에서 임시객체인 Cents를 빼도 정상적으로 -가 붙어서 출력이 나오는데요. 왜 굳이 임시 객체를 통해서 반환해 줘야 하나요? 인스턴스를 만들면 this가 자동으로 호출이 되니까 Cents를 빼고 return this->(-cents_); 또는 return -cents_; 를 해줘도 멤버변수를 그대로 리턴해줄 수 있지 않나요??
- 미해결홍정모의 따라하며 배우는 C++
friend함수 관련 질문이 있습니다.
class Cents { private: int m_cents; public: Cents(int cents = 0) { m_cents = cents; } //생성자 int getcents() const { return m_cents; } friend Cents operator + (const Cents& c1, const Cents& c2) { return Cents(c1.m_cents + c2.m_cents);// 안으로 들어왔기 때문에 getcents()함수를 통해서 접근할 필요가 없음. } };이렇게 클래스 안에서 정의한것과 class Cents { private: int m_cents; public: Cents(int cents = 0) { m_cents = cents; } //생성자 int getcents() const { return m_cents; } friend Cents operator + (const Cents& c1, const Cents& c2); }; Cents operator + (const Cents& c1, const Cents& c2) { //return Cents(c1.getcents() + c2.getcents()); return Cents(c1.m_cents + c2.m_cents); }이렇게 밖에서 정의하는것의 차이가 궁금합니다.강의 마지막 부분에 클래스 부득이하게 멤버변수라던지 등등이 선언이 안되서 컴파일 에러가 발생하기 때문에 아예 존재한다 정도만 알려주는 선에서 미리 선언만 클래스 내부에서 하고 정의는 아예 밖에서 해버리는 케이스를 예로 들면서 설명해주셨는데요 오직 이런 상황만이 저렇게 friend함수를 외부에서 정의하는 이유에 해당되는지 아니면 주된 목적이 따로 있는지 궁금합니다. 요약.1.friend함수를 클래스 내부or외부 에서 정의할때 기능적인 차이 혹은 이유가 존재하는지??
- 해결됨홍정모의 따라하며 배우는 C++
operator+ 정의부분에서 궁금한 것이 있습니다.
Cents operator+(const Cents& right_value) { return (this->cents_ + right_value.cents_);//추상적인 클래스는 return by reference가 불가능함! }에서 교수님께서는 return Cents(this->cents_ + right_value.cents_); 라고 입력하셨는데, getCents()의 오버로딩을 통한 함수 호출이 아니라서 사실상 return 뒤에 Cents를 안 붙여도 정상적으로 작동하던데 이게 맞나요?두번째로, 다른 분들의 질문 글을 참조하였는데, 클래스를 반환하는 것이 아닌 아래와 같이 void를 반환하고friend void operator+(const Cents & c1, const Cents & c2) { cout << c1.m_cents + c2.m_cents << endl; } int main() { Cents cents1(6); Cents cents2(8); cents1 + cents2; // 14 도 정상적으로 작동하는데 클래스를 반환하는 것과 void를 반환하는 것중 어느게 더 속도가 빠른가요??마지막으로, non-member function으로 오버로딩을 할 때 cents1과 cents2는 각각 다른 주소에 멤버변수가 저장되어 있어서 operator+가 private에 접근하려면 friend를 선언해야 한다는 제 이해가 맞을까요??
- 미해결홍정모의 따라하며 배우는 C++
3분 17초 질문
강의 3분 17초 기준10번줄에 나온 ptr1(res) 부분에 대하여 질문 있습니다.저렇게 되면 "ptr1이 res에 대한 소유권을 가진다"는 것은 알겠으나, ptr1이 outer block을 나가면서 res도 같이 지워진다는 것이 잘 이해가 안됩니다.10번 줄의 의미가 "res라는 포인터가 있고, 이 포인터를 ptr1이 가리키는 형태"가 아닌, move로 res가 ptr1으로 옮겨진 것인가요?왜 "ptr1이 사라짐 = res도 같이 사라짐"이게 되는 것인가요?
- 해결됨홍정모의 따라하며 배우는 C++
함수에 값을 대입한다는 개념이 이해가 되지 않습니다.
안녕하세요. 우선 질문을 좀 많이 드려서 죄송합니다.15분 6초를 보면 something.getValue()에 10을 대입하는내용이 나오는데요. const가 없는 instance에는 10이 대입이 되고 const가 있으면 안된다는 내용은 이해를 했습니다. 그런데 함수에 값을 대입한다는 개념 자체가 이해가 되지 않습니다. 여기서 something.getValue() 함수는 그냥 m_Value를 return하는 함수인데 이런 함수에 왜 숫자가 대입이 되는건지 이해가 되지 않으며 10을 대입시키면 그 10은 어디로 가는건지도 궁금합니다.
- 해결됨홍정모의 따라하며 배우는 C++
int getvalue() const에서 const는 왜 뒤에 붙는건가요?
안녕하세요!본 강의에서 attribute에 const를 사용할 때 제일 뒤에 const를 붙이셨잖아요. 다른데서는 const가 다 앞에 붙는데 attribute에만 뒤에 붙이는 이유가 따로 있을까요?
- 해결됨홍정모의 따라하며 배우는 C++
const Something &st에서 const를 빼면 안되나요?
안녕하세요!수업시간 11분 20초에서요.void print(const Something &st)에서 const와 &를 넣는 이유가 instance를 복사하지 않고 referance로 가져와서 사용하기 위한 것이고 그렇게 하면 main에 만들어진 instance와 print 함수 안에 사용되어진 instance가 주소가 같다고 설명해주셨잖아요.그런데 이렇게 &를 사용하는거면 앞에 const가 없어도 되지 않나요? 여기에 const가 들어가는 이유는 뭔가요?
- 미해결홍정모의 따라하며 배우는 C++
friend함수는 다른 클래스의 멤버함수로 쓸 수 없나요??
#include <iostream> #include <string> using namespace std; class Friend1 { private: string name; friend void Friend2::set_name(Friend1& f, string s); friend void Friend2::show_name(Friend1& f); }; class Friend2 { public: void set_name(Friend1& f, string s) { f.name = s; } void show_name(Friend1& f) { cout << f.name << endl; } }; int main(void) { Friend1 f1; Friend2 f2; f2.set_name(f1, "abc"); f2.show_name(f1); return 0; }Friend2 의 멤버함수인 set_name과 show_name을 클래스 Friend1에 friend선언을 해 주려 합니다. 하지만 private한 name 변수에 접근할 수 없다는 이유로 작동하지 않습니다.이런 구조로 코드를 작성하는 방법은 없을까요? 아니면 전역함수만 friend 선언이 가능한 걸 까요?
- 해결됨홍정모의 따라하며 배우는 C++
연쇄호출에 대해 질문있습니다!
안녕하세요!강의에서 10분경에 연쇄호출을 설명해주셨잖아요.보면 add함수, sub함수, mult함수 다 앞에 Calc&를 붙혀서 클래스 안에 있는 함수들이 서로를 참조할 수 있게만들었는데, 왜 print함수에는 Calc%를 붙이지 않고 void를 그대로 사용하나요? 그리고 그럼에도 불구하고 왜 cal.add(10).sub(1).mult(2).print();가 정상적으로 작동하나요?
- 미해결홍정모의 따라하며 배우는 C++
2:08 질문
2:08초에서 10번째 줄 생성자가 default constructor이라고 나오는데, default constructor가 아닌것 같아서 질문 올립니다. default constructor이라면 괄호 안에 인자가 없어야 하는 것이 아닌가요?
- 해결됨홍정모의 따라하며 배우는 C++
구글에 검색해보면 heap 사이즈랑 stack 사이즈가 같게 나와요.
안녕하세요!본 강의에서 stack은 heap보다 용량이 작은 대신에 빠르다고 설명해주셨잖아요. 그런데 구글링을 해보면 둘 다 default 사이즈가 1mb라고 나와요.캡쳐된 사진은 마이크로 소프트 웹사이트에 나와있는 설명인데요. 강의 내용과 웹사이트 설명이 달라서 그러는데 혹시 제가 어떤 부분을 잘못 이해하고 있는 걸까요? 좀 알려주세요.
- 해결됨홍정모의 따라하며 배우는 C++
Something::_init Something::s_initializer; 의 의미는 무엇인가요??
제목 그대로 궁금한데요. Something::_init이 Something 클래스 안에있는 init클래스까지는 이해가 됩니다. 그런데 왜 _init 옆에 또 Something을 써줘야하나요??
- 미해결홍정모의 따라하며 배우는 C++
혹시 강의마다 교수님께서 작성하신 소스코드 전반을 알 수 있을까요??
먼저 양질의 퀄리티 강의를 제공해주신 교수님께 감사의 말씀을 드립니다.그런데, 어떤 강의에서는 동영상에서 소스코드를 왔다갔다 움직이셔서 보고 따라 치기가 힘들더라구요. 혹시 "홍정모 공식 카페"에 따배씨++에 관한 소스코드가 제공되어 있을까요?? 그렇지 않다면, 어디서 리소스를 얻을 수 있을까요? 감사합니다 :)
- 해결됨홍정모의 따라하며 배우는 C++
static_assert 매개변수 관련 질문
#include <iostream> #include <vector> #include <cassert> using namespace std; void printVector(vector<int>& temp, const int index) { assert(index >= 3); static_assert(index >= 3, "index should be less than 3");//여기서 컴파일 에러 } int main() { std::vector<int> vec{ 1,2,3,4,5 }; printVector(vec, 3); }static_assert 에서 에러가 나는데매개변수를 const 상수화 해도 static_assert문에서 에러가 나는 이유가 뭔가요?
- 해결됨홍정모의 따라하며 배우는 C++
m_b를 출력하는 방법이 궁금합니다.
안녕하세요!5:43에 나와있는 코드에 관한 질문인데요.클래스 안에 클래스를 만들어서 출력을 하는 코드인데강의에서는 디버거로 어떻게 돌아가는지만 보여주시고클래스 안에 있는 클래스의 멤버값을 출력하는 방법은안 보여 주시더라고요.그래서 직접 해봤는데 에러가 뜨네요 ㅠ혹시 왜 에러가 뜨는지, 그리고 어떻게 하면 출력이 되는지 여쭤봐도 될까요?
- 해결됨홍정모의 따라하며 배우는 C++
생성자 멤버 초기화 목록을 만든 다음에 아래에 { }는 왜 꼭 있어야 하나요?
안녕하세요!선생님께서 수업시간에 설명해주신 코드를 따라쳐보니생성자 멤버 초기화 목록 아래에 남아있는 {}를 없애니까에러가 뜨더라구요.강의에서도 선생님께서 { }를 빈칸으로 두시던데그게 맞는건가요?{ }는 안에 멤버들을 집어넣어서 초기화 할 때 사용하잖아요. 멤버 초기화 목록을 사용하면 없어도 되는 것 같은데 굳이 비어있는 { }를 남겨두는게 이상해서 질문드립니다.