이번에는 프로그래밍 언어에서 리터널, 상수라는 이야기가 나오게 되는데 이걸 공부해보자. 리터널 리터널(literal)은 프로그래밍 언어에서 고정된 값을 나타내는 표현 방식 코드 상에서 직접 사용되어 특정한 값을 나타내는 표현. 변수나 식 등과 달리 값 그 자체로 나타냄. 여러 종류의 리터널이 있음. 주로 기본 데이터 타입에 따라 다양한 형태로 나타낼 수 있다. 정수 리터널 (Integer Literal): 정수 값을 나타냄. 42 부동소수점 리터널 (Floating-Point Literal): 부동소수점 숫자를 나타냅니다. 3.14 문자열 리터널 (String Literal): 문자열을 나타내며, 문자열은 작은 따옴표(')나 큰 따옴표(")로 묶어진다. "Hello, World!" 불리언 리터널 (Boo..
전체 글
예비 프로그래머 42 - jaeyojunforms을 작성하는 거는 귀찮아서 interns이 존재한다고 한다. 인턴에게는 이름도 없고, 등급도 없고, 독특한 특성도 없습니다. 관료들이 관심을 갖는 유일한 것은 그들이 일을 하는 것입니다. → 멤버 변수가 없다라는 것임. 그렇지만 중요한 makeForm 함수가 존재. AForm *makeForm(const std::string &form, const std::string &target); 이 함수 안에는 if/elseif/else 금지 → 함수 포인터 사용. "Bender"를 대상으로 하는 RobotomyRequestForm을 생성. intern hpp #ifndef INTERN_HPP # define INTERN_HPP #include "AForm.hpp" #include "Presidentia..
이제 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..
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 클래스를 통해 시스템 상 내부에서 알아서 발생한 예외..
→ if-else문을 통해 예외를 인지하게 한 후 직접 throw를 던졌었지만 문제가 생기면 std::exception 클래스를 통해 시스템 상 내부에서 알아서 발생한 예외를 throw 한다. 예외(exception)은 프로그램 실행 중에 예기치 않은 상황이나 오류가 발생했을 때 발생하는 이벤트를 가리킵니다. 예외는 프로그램이 비정상적으로 종료되는 것을 방지하고 오류를 처리하는 메커니즘을 제공 → C++ 표준 클래스로 예외의 여러 종류들을 나타내는 여러 자식 클래스들을 두고 있다. • runtime_error 클래스, logic_error 클래스 등등 C++ 표준의 exception 클래스 를 상속받고 있다. #include #include #include int main() { try { std::st..
→ 우리에게 익숙한 예외처리는 if문을 이용한 예외처리임. 하지만 if문을 보고 예외처리를 위한 코드인지 프로그램의 흐름을 구성하는 코드인지 쉽게 구분하지 못해서 가독성이 떨어짐. C++의 예외처리 메커니즘을 이용하면 가독성을 높일 수가 있다. C++은 구조적으로 예외를 처리할 수 있는 메커니즘을 제공한다. 가독성과 유지보수성을 높일 수 있을 뿐만 아니라, 예외의 처리를 프로그램의 일반적인 흐름에서 독립시키는 것이 가능하다. Try Try 블록은 예외 발생에 대한 검사의 범위를 지정할 때 사용됨. 즉, try 블록 내에서 예외가 발생하면, C++의 예외처리 메커니즘에 의해서 처리가 된다. try { // 예외발생 예상지역 } try 블록을 묶는 기준은 예외가 발생할만한 영역을 묶는 것이 아니다! 예외가 ..
들어가기 전 추상 클래스, 순수 가상 함수에 대해 공부하고 가자 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..
순수 가상 함수 C++ 가상 함수(virtual function)는 파생 클래스에서 재정의할 것으로 기대하는 멤버 함수를 의미한다. 이와는 달리 순수 가상 함수(pure virtual function)란 파생 클래스에서 반드시 재정의해야 하는 멤버 함수를 의미한다. 따라서 파생 클래스에서 재정의하지 않으면 사용 불가능. 순수 가상 함수는 virtual 키워드와 함께 = 0으로 표시된다. → 즉 virtual 키워드만 있으면 가상 함수이고 =0이 같이 붙으면 순수 가상 함수라는 말임. class Base { public: virtual void pureVirtualFunction() const = 0; }; 추상 클래스 C++에서는 하나 이상의 순수 가상 함수를 포함하는 클래스를 추상 클래스(abstrac..