본문 바로가기

cpp

[42서울] CPP Module 08 - STL 서론 당연히 STL 없이도 구현할 수 있지만 그걸 사용하는 것이 과제의 목적이므로 가능한 한 많이 사용하려고 노력할 것. 템플릿을 헤더 파일에 정의해도 되고 tpp파일에 정의해도 됨. 모든 경우에 tpp는 옵션, hpp는 필수 파일임 표준 템플릿 라이브러리(STL)는 컨테이너, 이터레이터, 함수 객체, 알고리즘을 나타내는 템플릿들의 집합…. 컨테이너는, 배열과 같이, 여러 개의 값을 저장할 수 있는 구성단위… 알고리즘은 배열을 소트 하거나 리스트에서 특정 값을 검색하는 것과 같은 특별한 작업들을 사용하기 위해 상용하는 방법… 이터레이터는 배열 안에서 포인터를 사용하여 위치를 옮기듯이, 컨테이너 안에서 위치를 옮길 수 있도록 도와주는 객체들이다. 즉, 이터레이터는 포인터의 일반화이다. - [C++ 기초 플.. 더보기
[42서울] CPP Module 07 - 템플릿 서론 함수 템플릿과 클래스 템플릿을 구현해보는 과제이다. 템플릿에 대해 이해하기만 하면 구현은 별로 어려울 것이 없는 과제이다. https://modoocode.com/219 씹어먹는 C++ - modoocode.com https://www.hanbit.co.kr/store/books/look.php?p_code=E6410226806 Thinking About: C++ STL 프로그래밍 C++의 기초적인 내용은 알지만, STL에 대한 경험이 없는 사람이 기본적인 개념을 이해하고 기초적인 사용법을 아는 데 중점을 두고 설명했다. 함수 템플릿과 클래스 템플릿의 개념을 설명하고 이 www.hanbit.co.kr ex00 다음의 함수 템플릿을 만들어라 swap : 2개의 arg를 받아서 서로의 값을 바꾼다. 아.. 더보기
[42서울] CPP Module 06 - 형변환 서론 말그대로 C++의 방식대로 형변환을 해보는 과제이다 추가 룰로 각 ex마다 풀기 위해 특정한 하나의 형 변환을 사용해야 하는데 그 선택이 defense에 담겨있어야 한다. ex00 string을 일반적인 자료형으로 명시적으로 변환하여 출력하는 프로그램을 만들어라. 일반적인 자료형이란 char, int, float, double을 의미한다. char 예시 : ‘c’, ‘a’ … 출력할 수 없는 문자열이라면 출력하려 하지 말고 해당 정보를 알려주면 된다. int 예시 : 0 -42 42 … float 예시 : 0.0f, -4.2f, 4.2f … 추가로 -inff, +inff, nanf 도 받을 수 있어야 한다. double 예시 : 0.0, -4.2, 4.2 … 추가로 -inf, +inf, nan 도 .. 더보기
[42서울] CPP Module 05 - 재사용성과 예외처리 서론 재사용성과 예외처리에 대한 과제이다. try-catch문과 exception을 사용해보면서 예외처리를 몸에 익히는 과제라고 생각하면 될 것 같다. ex00 거대한 관료체계의 관료 클래스를 만들어라 상수 name과 1~150 사이의 grade을 보유해야 한다. 만약 잘못된 등급을 받게 되면 Bureaucrat::GradeTooHighException이나 Bureaucrat::GradeTooLowException 함수를 호출하여 예외처리를 해야 한다. 생성자에서도 에러 발생 시 동일한 함수로 예외처리를 하라. getName과 getGrade 함수를 만들고 grade를 높이거나 낮추는 함수도 보유해야 한다. 1등급이 가장 높기 때문에 3의 grade를 높인다면 2가 된다. grade = grade; if.. 더보기
[42서울] CPP Module 04 - 다형성과 추상클래스 서론 서브젝트 첫 페이지에 나오듯이 다형성과 추상 클래스, 그리고 인터페이스를 구현해보는 과제이다. 여담으로 cpp 03 이후에 04부터 08까지 한번에 끝낸 다음에 평가를 받았는데, 평가를 받으면서 보니 별로 좋은 생각은 아니었다. 평가를 받으면서 무슨 생각으로 이렇게 만들었는지를 까먹고 평가자와 같이 고민하게 되는 큰 문제가있었다. ex00 모든 exercise에서는 최대한 완벽한 테스트를 제공할 수 있도록 노력해야 한다. 모든 생성자와 소멸자는 클래스에 따라 다른 이름이 나와야 한다. 시작은 Animal 클래스 하나만 구현한다. protect로 string 타입의 type 변수 하나만 보유한 클래스이다. Dog 클래스와 Cat 클래스를 만들어서 각자 이름에 맞는 type를 가지도록 한다. Dog는 .. 더보기
[42서울] CPP Module 03 - 클래스 상속 서론 후술하겠지만 ex03에서 잘못 이해하고 구현한 부분이 있다. 그런데 테스트를 해보니 나와 평가자 둘 다 잘못 알고 있어서 한바탕 웃고 넘어갔지만, 굉장히 부끄러운 순간이었다. '내가 평가자였으면 어땟을까...' 하고 곰곰이 생각을 해보니 나는 fail 의 기준을 '평가표의 내용을 모르고 구현하지 않거나 다르게 구현한 경우'와 '잘못 알고 있으면 구현하지 못하는데 구현한 경우'를 fail 사유라고 생각하니까 아마 fail까진 아니었을 것 같단 생각도 든다. ex00 귀여운 클랩트랩 클래스를 구현하는 과제. private : 생성자 매개변수로 초기화하는 name HitPoint (10) Energy points (10) Attack damage (0) public : void attack(const s.. 더보기
[42서울] CPP Module 02 - 고정 소수점 클래스 만들기 서론 평가를 받고 나면 바로바로 글을 남겨야 글이 술술 나오는데, 평가를 받고 며칠 후에 글을 쓰려니 내가... 뭐라고 했더라...라는 생각이 들면서 글이 제대로 나오질 않는 것 같다. 본가에 내려가는 버스가 마지막 평가 끝나고 한 시간 뒤여서 급하게 평가를 받았고, 집에 내려가서도 공부를 안 하다 보니 내 과제이지만 뭔가 생소하다. 긍정적으로 생각해보면 에빙하우스의 망각곡선처럼 더 까먹을 때쯤 정리를 다시 하니 복습이 더 잘되는 것 같기도 하다. 코드를 다 완성하고 나면 서브젝트와 코드 내용을 노션에 정리한 다음, 1~2일 후에 평가를 받고, 거기에서 3~4일 후에 글을 쓰니까 사실 난 의도적으로 복습을 하고 있는 게 아닐까? ex00 부동소수점에 대한 칼럼이 나오고, c++에 고정소수점이 없으니까 그.. 더보기
[42서울] CPP Module 01 - 클래스와 레퍼런스 서론 cpp 과제는 과제보다 평가가 두배는 더 힘든 느낌이다. 평가받아야 하는 횟수 자체도 압도적으로 많은데, 카뎃 대부분은 C++을 모르다 보니 설명을 하려면 굉장히 먼데부터 설명해야 한다. 본론으로 들어가면, cpp module 01 과제는 제목에서처럼 클래스와 레퍼런스를 사용해보는걸 중점으로 하고 있다. 객체 지향 언어의 기본이자, C++의 꽃이라고 할 수 있는 부분이기 때문에 깊게 공부할수록 좋다. ex00 Zombie 클래스를 만든다. 디버깅, 평가 등을 위해 소멸자에 메시지를 넣는다. Zombie 클래스에는 본인의 이름과 BraiiiiiiinnnzzzZ... 를 출력하는 announce 기능이 있다. Zombie가 적절할 때 소멸되도록 만들고, 그에 따라 스택 영역과 힙 영역에 할당하도록 한다.. 더보기