월 24,200원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 홍정모의 따라하며 배우는 C++
.cpp와 .h를 분리하는 것이 어떤 면에서 좋은 건가요?
삭제된 글입니다
- 미해결홍정모의 따라하며 배우는 C++
질문이에요
13. 7 포인터에 대한 템플릿 특수화 강의를 듣던 도중에, 템플릿 파라미터가 포인터일 경우 특수화하는 것에 대한 코드를 작성하는 것을 보다가 문득 궁금해서 질문드려요. 포인터일경우 특수화하는 과정에서 template<class T> class A { private : T m_value; public : A(const T& input) : m_value(input) ... } 이였던 코드를, 포인터에 대한 특수화로 변경하시면서, 생성자의 파라미터 부분을 A(T* input)으로 바꾸시더라구요. 생성자의 파라미터 부분을 A(const T * input)이나 A(const T* & input)으로 두고 할 경우 error가 나는데 왜 error가 나는건가요 ? 특히, const T* input의 의미는 input에 저장된 주소값을 변경하지 않는다는 의미라고 생각하면, 큰 문제가 없을 것 같은데.. 설명 부탁드려요. 감사합니다!
- 미해결홍정모의 따라하며 배우는 C++
16:30 Main function
16:30 을 보면 Main function이 가장 먼저 실행되는데요 ,cout<<"Main function"<<endl 이 가장 아래에 있는데 어떻게 이게 가능한건가요?
- 미해결홍정모의 따라하며 배우는 C++
쓰레드와 logical processors?
안녕하세요 강의 11:30 을 보면 교수님이 본인 컴퓨터의 core 와 logical processors의 개수를 살펴보고 계신데요 . 제가 검색을 조금 해보니 코어수x2 = 쓰레드의 수 라는 말이 많더라구요. 그렇담 logical processor = thread 인거고, 쓰레드는 최대 16개(여기서는)까지 동원할 수 있는건가요?
- 해결됨홍정모의 따라하며 배우는 C++
std::max() 앞에 왜 std::를 붙이는건가요?
#include <algorithm>만으로도 max사용이 가능한데 왜 std::를 붙이셨는지 이유를 모르겠습니다.저는 std::없이 출력해도 값이 나오는데 이해가 안가네요 max라는 함수는 algorithm에서 이미 정의되있는거 아닌가요? std::안에도 max가 있다는건 무슨 말인가요? #include #include using namespace std; int main() { cout << max(1+3,3) << endl; }
- 미해결홍정모의 따라하며 배우는 C++
getline() 의 입력단위
12:50 을 보면 , getline()은 한 줄 전체를 입력받아 두번째 getline은 아무것도 받아오지 못하는 모습인데요 , 이말인즉슨 , getline()은 버퍼 전체를 읽고 입력버퍼를 비워버린다고 봐도 되는건가요?
- 미해결홍정모의 따라하며 배우는 C++
14:18 개행문자
14:18을 보면 cin.getline 과 cin.get을 사용한 경우의 차이를 보여주고 있습니다. cin.getline은 '₩n' 을 읽어오고 cin.get은 그렇지 않다는게 그 차이인데요 두번의 입력코드에서 상단에 cin.getline 을 쓰건 cin.get을 쓰건 하단의 cin.getline에 의해 '₩n'이 읽어지는데 출려결과를 보면 '₩n'이 실행되지 않은 모습입니다. endl도 있으니 한칸 더 줄바꿈되어야 될 것 같은데요. endl 과 '₩n' 둘중하나만 실행된 모습입니다. 보통 c에서는 개행문자를 읽으면 콘솔에 그대로 빈칸이 하나생겼는데 여기서는 그렇지 않네요 답변부탁드립니다!!
- 미해결홍정모의 따라하며 배우는 C++
c style 문자열에대해
안녕하세요 음 .. 어찌보면 c강의에 질문드려야 할 것 같기도한데 공통적인? 내용이니 여기다가 질문드립니다! 제가 알기로는 const char* String="hello" ; 의 "hello" 같은 문자열 리터럴은 끝에 '₩0'을 하나붙여 메모리의 ' 데이터 영역(BSS)ㅡ읽기만 가능한 영역' 에 저장되어 프로그램 종료시까지 존재하는것으로 알고있습니다.(그래서 같은 내용의 문자열 호출시 같은 문자열을 반복사용하는것으로 알고있구요) 그런데 cout<<"hello"; cout<<"good bye" ; string my_str="nice" char str[]="good " 의 "hello" , "good bye" "nice" "good"처럼 한번쓰고 사라질 문자열도 위와 마찬가지로 끝에 '₩0'을 하나붙여 bss - 읽기만 가능한 영역 에 저장되어 종료시까지 살아있나요? 감사합니다
- 미해결홍정모의 따라하며 배우는 C++
cin과 빈칸
안녕하세요. cin은 빈칸은 받아오지 못하는 특성이 있습니다. 근데 빈칸을 가져오지 못한다는게 콘솔에서 콘솔입력버퍼로 빈칸을 가져오지 못하는건가요 아님 , 콘솔입력버퍼로 가져오나 버퍼에서 저장하고자하는 메모리공간에 빈칸을 가져오지 못하는건가요? 감사합니다
- 미해결홍정모의 따라하며 배우는 C++
max_size()
max_size()는 string class의 capacity 의 max값을 의미한다고보면 되나요?
- 미해결홍정모의 따라하며 배우는 C++
2분7초 const char[1]
2분7초경에 "" 에 커서를 올리면 const char[1] 이라 뜨는데 실제 my_str의 사이즈는 0이라 뜹니다.(empty) 그렇담 ""은 아무내용없는 문자열이지만 문자열이니 자동적으로 null character가 반드시하나 붙어 null character가 하나만 있는 문자열이고 , 이를 고전적인 C방식인 char name[] 의 배열이나 const char* name 이라는 포인터로 다루면 null character가 하나있게 저장되는 것을 의미하는데, string이라는 클래스에서는 null character가 절대 저장안돼게 설계되있기에 ,string의 멤버변수에 아무것도 없는 비어버린 상태가 되는건가요?
- 미해결홍정모의 따라하며 배우는 C++
git commit
안녕하세요? 강의 잘 듣고 있습니다. 질문이 있는데, 내 컴퓨터에 있는 파일이 github까지 올라갈때 그 과정이 내 컴퓨터에 저장 -> git에 commit -> github서버에 push 같은 느낌으로 이해를 했습니다. 이 때, git에 commit한 파일은 따로 저장되는 디렉터리가 있나요? 있다면 어디에 저장되는지 알 수 있을까요?
- 미해결홍정모의 따라하며 배우는 C++
질문이
안녕하세요^^ 강의 잘 듣고 있습니다. 다름이 아니라 출력연산자 오버로딩할때 리턴타입으로 std::ostream& 이렇게 '&'를 꼭 붙여야하고 안붙일 경우 에러메세지가 나오는데.. 에러메세지가 무엇을 뜻하는지 잘 모르겠어서요.. 왜 꼭 &를 붙여주어야 하는거죠? 예를 들어 아래와 같이 출력연산자를 오버로딩해줄 경우(&를 안붙이고)는 왜 안되는 건지 설명 부탁드려요! friend std::ostream operator << (std::ostream& out, const Base b) { return b.print(out); } * 에러메세지 : function "std::basic_ostream<_Elem, _Traits>::basic_ostream(const std::basic_ostream<_Elem, _Traits> &) [with _Elem=char, _Traits=std::char_traits<char>]" (declared at line 60 of "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include\ostream") cannot be referenced -- it is a deleted function.
- 해결됨홍정모의 따라하며 배우는 C++
똑같이 작성했는데 오류뜨네요
왜 이럴까요
- 미해결홍정모의 따라하며 배우는 C++
std::move
std::move는 l value 를 영구히 r value로 변환시키나요 아님 l value라는 사실은 변하지 않고 딱 쓰이는 그 순간에만 컴파일러가 l value임에도 r value로 인식하게 만드는건가요?
- 미해결홍정모의 따라하며 배우는 C++
4:10 res1->setAll()
4:10 경에 res1->print() / res1->setAll() 의 두가지 함수를 사용하고 있는데요 res1은 print()와 setAll()이 정의된 클래스가 아니고 (상속구조도 아닐뿐더러) 단지 두함수가 정의되있는 클래스의 포인터 변수만을 지니고있는데 어떻게 res1-> 으로 하여 res1의 주소로 두 함수를 접근할 수 있나요?
- 미해결홍정모의 따라하며 배우는 C++
14:30 really necessary?
14:30 경에 교수님은 Autoptr(Autoptr &&a) Autoptr & operator=(Autoptr&&a) 에서 a.m_ptr 이really necessary 한지 여부를 따지고 계신데요, 교수님의 결론은 굳이 안써줘도 된다 였습니다. 그런데 저는 이해가 안됍니다 . a.m_ptr=null ptr; 이없다면 , 소유권이전이 안돼는 (move semantics가 안돼는) 것 아닌가 싶네요 . 따라서 main.cpp에서 generateResource() 가 종료되며 Autoptr res 객체가 소멸되며 ~Autoptr이 작동해 (a.)m_ptr이 해제되어 프로그램의 출력결과도 Autoptr default constructor Resource length constructed Autroptr default constructor Autoptr move assignment Resource destructed Autoptr destructor 에러 ( 이미 지운메모리 영역을 다시 지우려함 ) 위와 같이 되야하는것 아닌가 싶네요 . 또한 위의 질문과는 별개로 , Autoptr(Autoptr &&a) Autoptr & operator=(Autoptr&&a) 을 구현할때 왜 굳이 R-Value reference (&&)을 사용하신건지 궁금합니다. l-value reference(&) 와 r-value refernce 가 분명히 정의상 차이는 있다만 여기서는 굳이 기능상 차이가 있나 싶거든요. 그냥 l-value reference(&) 로 받아 Autoptr(Autoptr &a) Autoptr & operator=(Autoptr&a) 으로 했어도 결과는 똑같은것 같은데 ... 어떻게 생각하시나요?
- 미해결홍정모의 따라하며 배우는 C++
2:50 throw Exception()
2:50 경에 throw Exception()을 하는데 Exeption() 의 의미는 단순히 throw만을 하기위해 Exception 객체를 만들기 애매하니 익명Exception객체(임시객체)를 만들어 throw 하는것인가요?
- 미해결홍정모의 따라하며 배우는 C++
5:15 예외클래스의 전달 과 캐치
5:15 경에 예외클래스를 전달하고 캐치시에 catch(Exception & e ) -> Exception 클래스의 print 실행 catch(ArrayException & e)-> ArrayException 클래스의 print 실행 로 reference로 받고있는데 이러면 음 .. 강의에서 말씀하시는것처럼 ' 객체잘림 '이라기 보다는 '부모클래스의 print에 virtual이 붙지않아 ,다형성으로 구현할때 오버라이딩이 안됐다. ' 라고 보는게 조금 더 맞지않나 싶은데 ( 12.9 객체잘림과 reference_wrapper 강의를 보면 객체잘림을 설명하실때 객체잘림은 refernce 나 포인터가 아닌 instance 끼리의 대입연산자(=) 를 할때 이루어지는것으로 보여지거든요) 이부분은 어떻게 생각하시나요?
- 미해결홍정모의 따라하며 배우는 C++
9:40 throw custom exception
바로 이전강의에서 클래스를 throw시 , catch를 부모클래스로 하면 객체잘림이 발생하여 , 자식클래스의 오버라이딩된 함수가 구현되지 않고 부모의 함수가 구현되는 모습을 볼 수 있었습니다. 그런데 여기서는 throw Custom exception을 하고 아래에서 catch(std::exception &exception) 즉 부모클래스로 받는데도 exception.what()을 하면 자식클래스인 Custom exception.what()이 실행되는 모습을 볼 수있습니다. 왜그런가요?