본문 바로가기

전체 글224

[cpp개념공부] throw ,try-catch throw : 예외 발생시키기C언어와 다른 C++의 예외 처리C 언어에서는 예외가 발생했을 때, 다른 값을 리턴하는 것으로 예외를 처리하였지만, C++ 에서는 예외가 발생하였다는 사실을 명시적으로 나타낼 수 있습니다. 바로 throw 문을 사용하면 됩니다.표준 라이브러리 정의 예외 처리 객체 C++ 에는 예외를 던지고 싶다면, throw 로 예외로 전달하고 싶은 객체를 써주면 됩니다. 예외로 아무 객체나 던져도 상관 없지만, C++ 표준 라이브러리에는 이미 여러가지 종류의 예외들이 정의되어 있어서 이를 활용하는 것도 좋습니다.예를 들어서, 위 경우 out_of_range 객체를 throw 합니다. C++ 표준에 out_of_range 외에 overflow_error, length_error, runtim.. 2023. 2. 18.
[c++ 개념공부] virtual 소멸자,가상함수 테이블, 다중상속, 가상상속 virtual 소멸자상속시에 소멸자 처리(중요!!)💡상속 시에, 소멸자를 가상함수로 만들어야 된다잘못된 예시코드#include class Parent { public: Parent() { std::cout 2023. 2. 11.
[cpp개념공부] 가상함수와 업 캐스팅 상속을 사용하는 이유기능이 겹치는 부분을 여러 번 복사 붙혀넣기 할 필요 없이 기능을 가져와서 사용하기 위해서상속이라는 기능을 통해서 객체지향 프로그램이 추구하는 객체의 추상화를 더 잘할 수 있다.클래스간의 관계is -a 관계모든 상속 관계는 is a 관계이다.class Manager : public Employee• Manager is a Employee !!Manager 클래스는 Employee 의 모든 기능을 포함한다Manager 클래스는 Employee 의 기능을 모두 수행할 수 있기 때문에 Manager 를 Employee 라고 칭해도 무방하다즉, 모든 Manager 는 Employee 이다 ( Manager is a Employee !! )클래스가 파생될수록 좀 더 특수화(구체화 special.. 2023. 2. 11.
[Cpp 개념공부] 상속 (함수 오버라이딩, 상속 접근지시자) 상속 (Inheritance) 다른 클래스의 내용을 그대로 포함 할 수 있다. -즉 복사 붙혀넣기를 줄일 수 있는 방법 부모 - 자식 클래스 또는 기반-파생 클래스라고 부른다. (부모가 여럿일 수 있기 때문에 기반 파생 클래스가 더 적절하다)ex) class Derived : public Base ===⇒ Derived 가 Base를 public 형식으로 상속 받았다. 초기화 리스트에서 파생클래스는 기반클래스의 생성자를 먼저 호출하고 파생클래스의 초기화를 한다. 만약 명시적으로 호출 하지 않았다면 기반클래스의 디폴트 생성자가 호출된다. 예시 class Derived : public Base { std::string s; public: Derived() : Base(), s("파생") {// Derived.. 2023. 2. 10.
[컴퓨터 구조] 2진수 체계의 정수 표현 10진수와 2진수 2진수 체계에서는 어떤 수를 0과 1, 부호 및 소수점으로 표현한다. 예를들어서 10진수 -13.625라는 숫자가 있다면 이는 2진수로 -1101.101로 표현이 된다. 숫자의 이진수 소수점 표현법을 간략히 설명하자면 소수점 아래 첫째자리는 2 ^-1(=1/2)(=0.5) 둘째자리는 2^-2(=1/4)(=0.25) 셋째자리는 2^-3(=1/8) (=0.125) 이다. 즉 0.5 + 0.125를 해서 0.625를 표현한 것이다. 컴퓨터의 이진수 표현법 그러나 컴퓨터에서 사용되는 이진수 체계에서는 부호와 소수점을 사용할 수가 없어서 오직 0과 1만으로 수를 표현 해야 한다. 따라서 양수또는 음수를 나타내는 부호역시 0또는 1을 사용해서 표시해야하고 소수점도 필요에 따라서 특정위치에 있다고 .. 2023. 2. 10.
[컴퓨터 구조] 부동 소수점의 표현 시작하며… 이전 게시물에서는 숫자의 양수음수 표현법에 대해서 다뤘다. 만약 2의 보수표현법에 대한 개념이 없다면 이전 글을 보고 오길 바란다. 이번에는 숫자를 컴퓨터로 나타내는데 문제가 되는 소수점에 대한 문제에 대해서 이야기 해보고자 한다. 우리는 아주 큰 숫자를 표현할 때 활용하는 방법을 사용할 수가 있다. 부동 소수점이란? 예를 들어 125000000000000000000 같은 숫자를 표현한다고 하자 이런 큰 숫자를 표현할 때 우리는 이렇게 쭉 나열하기도 하지만 그렇게 하는 것 보다는 1.25 * 10^20 이렇게 표현을 할 수가 있다. 위 방법과 같이 소수점을 적절히 이동시켜서 아주 큰 숫자 또는 아주 작은 숫자를 효과적으로 표현할 수 있게 하는 방법을 우리는 부동소수점 숫자 표현방법이라고 부른다.. 2023. 2. 10.
[cpp 개념공부]연산자 오버로딩 (사용자 지정 연산자, 대입연산자, 입출력 오버로딩 ,첨자 연산자 Wrapper class) 사용자 지정 연산자 💡기본 연산자를 사용자가 직접 정의해서 사용하는것 :사용불가 사용자 지정 연산자💡::(범위지정), .(멤버지정), .*(멤버포인터로 멤버지정)을 제외한 모든 연산자 가능사용가능 사용자 지정 연산자+, -, * 와 같은 산술 연산자+=, -= 와 같은 축약형 연산자>=, == 와 같은 비교 연산자&&, || 와 같은 논리 연산자-> 나 * 와 같은 멤버 선택 연산자 (여기서 * 는 역참조 연산자 입니다. 포인터에서 p 할 때 처럼)++, -- 증감 연산자[] (배열 연산자) 와 심지어 () 까지 (함수 호출 연산자) 연산자 오버로딩기본형 : (리턴 타입) operator (연산자) (연산자가 받는 인자) 이 방법 외에는 함수 이름으로 연산자를 넣을 수 없다. Complex operato.. 2023. 2. 6.
백준 15686번 치킨배달(C++) 문제https://www.acmicpc.net/problem/15686정답 코드#include #include int mapp[51][51];//지도 int valid[51][51];//치킨집 사용가능여부 int n,m; using namespace std; int min_point=21474836; intfind_min(int y,int x) { int len = 0; int min = 21474836; for (int i=1;i 2023. 2. 1.
[c++개념정리]암시적 변환, explicit, mutable 💡 자주 쓰이지는 않지만 나름 중요한 explicit 과 mutable 키워드 암시적 변환 💡 클래스를 만들어서 넘겨줘야하는데 바로 넘겨주는 경우 컴파일러는 똑똑해서 클래스로 알아서 변환을 해줘서 넘겨준다. 이와 같은 변환을 우리는 암시적 변환이라고 부른다. void DoSomethingWithString(MyString s) { // Do something... } DoSomethingWithString(MyString("abc")) 이건 당연하게 가능하다. DoSomethingWithString("abc") 이것도 신기하게도 가능하다. "abc " 는 MyString타입이 아니다. 그런데 C++ 컴파일러는 꽤나 똑똑해서 "abc" 를 어떻게 하면 MyString으로 바꿀 수 있는지 생각해봅니다. 다행.. 2023. 1. 27.