'Computer Science/C & C++' 카테고리의 글 목록 (2 Page) — Archive

Computer Science/C & C++

Computer Science/C & C++

[C++] RTTI | 실행 시간 데이터형 정보

RTTI (Runtime Type Identification) 실행 시간 데이터형 정보 - 많은 클래스 라이브러리들이 실행 시간 중 데이터형을 결정하는 방법을 제각기로 제공하기 때문에 이들이 서로 호환되도록 하기 위해서는 RTTI를 위한 언어 표준이 필요하다. C++에서의 RTTI 요소 1. dynamic_cast 연산자 dynamic_cast(pt) // 포인터 pt를 Type * 형으로 변환하여 리턴한다. // (*pt)가 Type형이거나, Type형으로부터 직/간접적으로 파생된 객체이면, pt를 Type *형 포인터로 변환을 허용한다. // 변환할 수 없다면, 0을 리턴한다. if (pt1 = dynamic_cast(pt2)) pt1->exMethod(); // pt2 포인터를 exClass * 형..

Computer Science/C & C++

[C++] Exceptions | 예외

Exceptions 예외 - 예측하지 못한, 프로그램을 정상적으로 실행할 수 없는 상황에 대한 대처방법을 기술하는 기능이다. - 구형 컴파일러에서는 지원되지 않을 수 있다. - 일부 컴파일러에서는 Exceptions 기능을 Disable해 놓는 것이 Default Options이다. \(\texttt{std::abort()}\) 함수 - \(\texttt{cstdlib}\) 또는 \(\texttt{stdlib.h}\) 헤더파일에 정의되어 있는 함수이다. - \(\texttt{cerr}\)가 사용하는 스트림(표준 에러 스트림)에 "abnormal program termination" 메시지를 출력하고, 프로그램을 종료시킨다. (\(\texttt{abort()}\)를 호출한 함수를 종료하는 것이 아닌, 프로..

Computer Science/C & C++

[C++] Class Template | 클래스 템플릿

Class Template 클래스 템플릿 - 함수 템플릿에서 확장된 개념으로, C++의 \(\texttt{class}\)에도 템플릿을 적용할 수 있다. (기본적인 \(\texttt{template}\) Syntax는 윗 줄의 함수 템플릿 링크를 참조) - 템플릿 클래스 선언과 템플릿 메서드 정의는 근본적으로 클래스 정의와 메서드의 정의가 아니다. 클래스 템플릿은 그 자체로 하나의 틀을 제공하는 도구이며, 특정 데이터형이 배정되어 Instantiation(구체화)가 이루어져야 비로소 하나의 클래스 정의와 멤버 함수의 정의가 생성되는 것이다. ※ \(\texttt{export}\) 키워드 : 클래스 템플릿과 템플릿 멤버 함수들은 일반 클래스를 정의할 때와 달리, 분할 컴파일(별개의 파일로 분리하는 작업)이 ..

Computer Science/C & C++

[C++] Multiple Inheritance (MI) | 다중 상속

Multiple Inheritance (MI) 다중 상속 - Related Immediate Base Class(인접한 기초 클래스)가 두 개 이상인 상속을 지칭하는 용어이다. - 다수의 기초 클래스로부터 이름이 같은 메서드나 멤버를 상속받았을 경우와 같이 중복의 문제가 있을 수 있다. // Ex. 다중상속 예시 class Student : private std::string, private std::valarray { ... }; // string과 valarray, 두 라이브러리를 private 타입으로 다중 상속받는 Student 클래스 Syntax (문법) - 파생 클래스가 다수의 경로를 통해 어떤 기초 클래스를 두 번 이상 상속받았을 경우, 강제적 데이터형 변환을 통해 그 경로를 지정할 수 있다..

Computer Science/C & C++

[C++] valarray Template Class | valarray 템플릿 클래스

\(\texttt{valarray}\) Template Class \(\texttt{valarray}\) 템플릿 클래스 - 수치값들이 들어있는 배열에 대한 연산을 지원하는 템플릿이다. - \(\texttt{vector}\)나 \(\texttt{array}\) 클래스 또한 여러 종류의 수치값들을 리스트로 저장하는 컨테이너 템플릿 클래스이지만, \(\texttt{valarray}\)처럼 모든 사칙연산을 지원하지는 않는다. - \(\texttt{}\) 헤더 파일에 정의되어 있다. - \(\texttt{valarray}\) 객체를 선언할 때, 수치값의 데이터형을 홑화살괄호()안에 기입하고, 앞에 식별자 \(\texttt{valarray}\)를 붙인다. Syntax (문법) - \(\texttt{valarray}..

Computer Science/C & C++

[C++] Abstract Base Class | 추상화 기초 클래스

Abstract Base Class : ABC 추상화 기초 클래스 - 공통된 부분이 많지만, 한 객체가 어느 한 쪽에 속하지는 않는 관계일 때, 공통된 멤버들만으로 정의한 클래스를 Abstract Base Class(ABC; 추상화 기초 클래스)라고 한다. - ABC를 구현하고, 나머지 부분은 각 클래스마다 다르게 구현하고 ABC를 상속받는 방법으로 클래스를 정의하는 방식이다. - 이러한 기법으로, ABC 클래스의 배열을 사용하여 파생된 여러 종류의 클래스 객체들을 한 번에 관리할 수 있게 된다. (이는 Upcasting을 통해 구현된다.) - 추상화 기초 클래스는 각 클래스의 공통된 부분만 모아놓은 클래스이므로 불완전하다. 이 때문에 메서드를 구현하기 곤란한 경우가 있는데, 이는 메서드를 Pure Vi..

Computer Science/C & C++

[C++] Binding | 결합

Binding 결합 - 컴파일러가 함수 호출 구문을 보고, 어떤 함수로 매칭시킬지 해석하는 과정을 "함수 이름을 Binding(결합)한다." 라 표현한다. - C언어에서는 하나의 이름에 하나의 함수만 매칭되기 때문에, 바인딩 과정이 비교적 간단하다. - C++에서는 함수 오버로딩 기능이나 가상 함수로 인해 하나의 이름에 여러 함수가 매칭될 수 있어, 바인딩 과정이 간단하지 않다.(함수 이름뿐만 아니라, 함수의 Signature(매개변수 정보)까지 조사해야 한다.) Static Binding (Early Binding(초기 결합); 정적 바인딩) - 컴파일 시간 동안에 일어나는 바인딩이다. (C++ Default) - 실행 시간 동안에 일어나는 사용자의 입력 값에 관계없이, 매칭할 함수가 자명히 존재하는 ..

Computer Science/C & C++

[C++] Virtual Method | 가상 멤버 함수

\(\texttt{virtual}\) Method 가상 멤버 함수 - C++에서 \(\texttt{public}\) Polymorphic Inheritance(\(\texttt{public}\) 다형 상속)*을 구현할 수 있게 하는 수단이다. - \(\texttt{virtual}\) 키워드는 Base Class(기초 클래스)에 정의되어 있는 멤버함수를 Derived Class(파생 클래스)에서 상황에 맞게 재정의할 수 있게 한다. - 가상 멤버 함수는 기초 클래스 객체에 대한 연산과 파생 클래스 객체에 대한 연산이 거시적인 관점에서는 같으나, 세부 구현 사항에서는 차이가 있어야 할 때 적절한 구현 수단이다. - 파생 클래스에서 재정의되지 않은 함수는 기초 클래스에서 정의된 버전의 함수를 사용하게 되며, ..

lww7438
'Computer Science/C & C++' 카테고리의 글 목록 (2 Page)