이제 form에 어떠한 양식을 더 만들 거임 3가지로 나뉨 ShrubberyCreationForm: 필수 성적: 서명 145, 실행 137 작업 디렉터리에 _shrubbery 파일을 만들고 그 안에 ASCII 트리를 씁니다. RobotomyRequestForm: 필수 성적: 서명 72, 실행 45 드릴링 소음이 발생합니다. 그런 다음 이 50%의 확률로 로봇화되었음을 알려줍니다. 그렇지 않으면 로봇공학이 실패했음을 알립니다. PresidentialPardonForm: 필수 등급: sign 25, exec 5 이 Zaphod Beeblebrox에 의해 사면되었음을 알립니다. ShrubberyCreationForm hpp #ifndef SHRUBBERYCRETIONFORM_HPP # define SHRUBB..
42Seoul
Form Class 만들기 상수 이름. == const std::string name; 서명되었는지 여부를 나타내는 부울입니다(구성 시에는 서명되지 않음). == bool sign; 서명하려면 일정한 등급이 필요합니다. == const int signGrade; 이를 실행하기 위해서는 일정한 등급이 필요합니다. == const int execGrade; 양식의 등급은 관료에게 적용되는 것과 동일한 규칙을 따릅니다. 따라서 양식 등급이 범위를 벗어나면 Form::GradeTooHighException 및 Form::GradeTooLowException과 같은 예외가 발생합니다. class GradeTooLowException : public std::exception { public: const char ..
들어가기 전 try catch, throw과 exception,what을 공부하고 가자! try catch, throw https://wo-dbs.tistory.com/158 Try Catch, throw → 우리에게 익숙한 예외처리는 if문을 이용한 예외처리임. 하지만 if문을 보고 예외처리를 위한 코드인지 프로그램의 흐름을 구성하는 코드인지 쉽게 구분하지 못해서 가독성이 떨어짐. C++의 wo-dbs.tistory.com exception,what https://wo-dbs.tistory.com/159 exception, what → if-else문을 통해 예외를 인지하게 한 후 직접 throw를 던졌었지만 문제가 생기면 std::exception 클래스를 통해 시스템 상 내부에서 알아서 발생한 예외..
들어가기 전 추상 클래스, 순수 가상 함수에 대해 공부하고 가자 https://wo-dbs.tistory.com/156 순수 가상 함수, 추상 클래스 순수 가상 함수 C++ 가상 함수(virtual function)는 파생 클래스에서 재정의할 것으로 기대하는 멤버 함수를 의미한다. 이와는 달리 순수 가상 함수(pure virtual function)란 파생 클래스에서 반드시 재정의 wo-dbs.tistory.com ex01에서 한 소스 파일들을 그대로 붙여넣기 한 후에 우리가 바꾸어야할 것은 Animal.hpp이다 makesound에 =0 를 넣어주면 된다.! Animal.hpp #ifndef ANIMAL_HPP # define ANIMAL_HPP #include class Animal { protect..
들어가기 전 깊은 복사를 공부하고 가자 https://wo-dbs.tistory.com/153 깊은 복사 여기서는 깊은 복사에 대한 개념을 위주로 보기 보단 코드로 작성 예시를 보겠다 얕은 복사와 깊은 복사로 나뉘게 되는데 보통 우리는 얕은 복사를 사용하게 된다. 하지만 동적 할당을 한 후 얕 wo-dbs.tistory.com ex00에서 파일 그대로 복사하고 추가해야될 파일은 Brain.cpp Brain.hpp, 수정해야될 파일은 Dog.cpp, Cat.cpp Brain.hpp Brain.cpp 만들기 #ifndef BRAIN_HPP # define BRAIN_HPP #include "iostream" class Brain { private: std::string ideas[100]; public: B..
들어가기 전 밑 블로그에서 가상 함수를 공부하고 가자 ~~ https://wo-dbs.tistory.com/152 C++ 가상 함수 가상 함수란 가상함수는 부모 클래스에서 상속받을 클래스에서 재정의할 것으로 기대하고 정의해놓은 함수이다. virtual이라는 예악어를 함수 앞에 붙여서 생성할 수 있으며 이렇게 생성된 가상 wo-dbs.tistory.com Animal을 먼저 만들자. virtual을 통해 소멸자와, makeSound 구현 Animal.hpp #ifndef ANIMAL_HPP # define ANIMAL_HPP #include class Animal { protected: std::string type; public: Animal(void); Animal(const Animal &obj); ..
ClapTrap을 상속받은 FragTrap를 만든다. guardGate 대신 highFivesGuys를 구현. FragTrap.hpp #ifndef FRAGTRAP_HPP # define FRAGTRAP_HPP # include # include "ClapTrap.hpp" class FragTrap : public ClapTrap { public: FragTrap(); ~FragTrap(); FragTrap(std::string name); FragTrap(const FragTrap& FragTrap); FragTrap& operator=(const FragTrap& obj); void highFivesGuys(void); }; # endif FragTrap.cpp #include "FragTrap.hp..
ex01을 하기전 상속에 대한 공부를 해보자 https://wo-dbs.tistory.com/147 C++ 상속 상속(inheritance)이란? “일정한 친족적 관계가 있는 사람 사이에 한 쪽이 사망하거나 법률상의 원인이 발생하였을 때 재산적 또는 친족적 권리와 의무를 계승하는 제도” 라고 네이버 사전에 정 wo-dbs.tistory.com 공부를 한 후 상속 오버라이딩 https://wo-dbs.tistory.com/148 C++ 상속 오버라이딩 현재 ScavTrap이 ClapTrap을 상속받은 상태 ScavTrap.hpp #ifndef SCAVTRAP_HPP # define SCAVTRAP_HPP # include # include "ClapTrap.hpp" class ScavTrap : publi..
00에서 나오는 개념은 없다 문제대로 구현해주자. ClapTrap 구현 ClapTrap.hpp #ifndef CLAPTRAP_HPP # define CLAPTRAP_HPP # include class ClapTrap{ private: std::string name; unsigned int hitPoint; unsigned int energyPoint; unsigned int attackDamage; public: ClapTrap(); ~ClapTrap(); ClapTrap(std::string name); ClapTrap(const ClapTrap& ClapTrap); ClapTrap& operator=(const ClapTrap& obj); void attack(const std::string& tar..
이 문제는 비교, 산술, 증감 연산자를 오버로딩 해보는 문제이다. 연산자 오버로딩 → 간단하게 말해서 우리가 알고 있는 +, -, *, / 에서부터 ++, --, [], ==, =등 다양한 연산자들을 우리가 재정의해서 사용할 수 있게 해주는 방법. 아 근데 이 짓을 왜 해야되냐? 컴파일러는 우리가 만든 객체의 연산을 이애하지 못함. 우리가 객체를 만들고, 그 값들을 사용하는데 기본적인 연산자를 사용하지 못 하면 오바이긴 하니,, 우리가 만든 객체들의 연산자들의 정의를 우리가 직접 정의해서 객체끼리의 연산을 가능하도록 만든 거임. 연산자 오버로딩의 제한 → 오버로딩이 가능한 연산자가 있고 불가능한 연산자들이 있다. 이유는 기본적인 C++의 문법이 어긋날 수 있기 때문 Fixed.hpp #ifndef FIX..