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

Computer Science/C & C++

Computer Science/C & C++

[C++] Types of Relationship | 클래스간 관계의 유형 (IS-A, HAS-A 등)

- 다수의 클래스를 정의할 때, 공통되는 특성들만을 모아놓은 하나의 클래스를 설계하고, 그 그 클래스에 대한 "IS-A" 또는 "HAS-A" 관계를 밝혀서 나머지 클래스를 구현할 때, 상속을 통해 구현할 지, 멤버로 포함시켜 구현할지를 정한다. - 아래 4가지의 관계를 구현하기 위해 \(\texttt{public}\) Inheritance(\(\texttt{public}\) 상속)을 이용할 수는 있지만, 프로그래밍 문제가 발생할 여지가 있으므로, 가급적 \(\texttt{public}\) 상속은 "IS-A" 관계를 구현하는 수단으로만 사용하자. IS-A Relationship (IS-A 관계) - "IS-A"는 "~는 a이다."라는 표현으로, "주어에 A가 포함된다."를 의미한다. - "IS-A" 관계가..

Computer Science/C & C++

[C++] Class Inheritance | 클래스 상속

Class Inheritance 클래스 상속 - OOP의 지향점 중 하나인 코드의 재활용*을 구현하는 방법이다. - 상속 기능을 통해 Base Class(기초 클래스)로부터 모든 데이터 멤버와 멤버 함수들을 넘겨받은 Derived Class(파생 클래스)를 만들 수 있다. - Derived Class에서는 Base Class에서 넘겨받은 멤버에 데이터 및 기능을 추가할 수 있다. - 파생 클래스의 객체를 생성하게 되면, 프로그램은 그에 해당하는 기초 클래스 객체를 먼저 생성한 다음, 추가적인 데이터를 덧붙이는 방식으로 파생 클래스 객체를 만든다. (기초 클래스 Constructor -> 파생 클래스 Constructor) - 생성 순서와 정반대로, 객체의 파괴는 파생 클래스의 객체부터 먼저 파괴되며, 그..

Computer Science/C & C++

[C++] static Class Member Function | static 클래스 멤버 함수

\(\texttt{static}\) Class Member Function \(\texttt{static}\) 클래스 멤버 함수 - \(\texttt{static}\) 타입으로 정의한 클래스 멤버 함수를 의미한다. - 함수 원형과 정의를 분리하였을 경우, \(\texttt{static}\) 키워드는 함수 원형 부분에 선언해야 한다. - \(\texttt{static}\) 멤버 함수는 어떤 객체에도 결합되지 않으므로, 객체에 의해 호출되지 않는다. - \(\texttt{static}\) 멤버 함수는 \(\texttt{static}\) 데이터 멤버만 사용할 수 있다. - \(\texttt{static}\) 멤버 함수는 \(\texttt{this}\) 포인터를 갖지 않는다. - \(\texttt{static}..

Computer Science/C & C++

[C++] NULL Pointer | 널 포인터

NULL Pointer 널 포인터 C++11 이전 버전 - 0은 숫자 값(Zero)과 널 포인터 두 가지 의미로 혼재되어 있었다. - 이 때문에 많은 Reader 와 컴파일러가 두 의미를 구분짓는 데 어려움을 겪었다. - 이 두 가지 의미를 구분하기 위해, 널 포인터를 (void*) 0 으로 표현하기도 했다. - C 매크로를 통해 정의된 NULL 을 사용하기도 했다. (NULL 은 다수의 헤더파일에서 0으로 정의되어 있는 기호상수이다.) C++11 이후 버전 - C++11부터는 새로운 키워드 nullptr 을 통해 널 포인터를 표현할 수 있게 되었다. - 기존에 사용했던, 0을 비롯한 다양한 표현들을 아직도 사용가능하지만, nullptr 을 사용할 것이 권장된다. Exampel. nullptr Usage..

Computer Science/C & C++

[C++] Copy Constructor | 복사 생성자

Copy Constructor 복사 생성자 - 한 객체를 다른 객체로 복사할 때 자동으로 실행되는 생성자이다. - 일반적인 대입에 사용되는 것이 아닌, 값 전달에 의한(함수 매개변수 전달을 포함한) 초기화 작업에 사용되는 생성자이다. - 디폴트 복사 생성자는 \(\texttt{static}\) 멤버를 제외한 전 멤버들을 각각 복사 및 대입한다 (이러한 복사 작업을 Shallow Copying; 얕은 복사 또는, Memberwise Copying라 한다.) - 새로운 객체가 생성될 때마다 \(\texttt{static}\) 데이터 멤버의 값이 변하는 구조의 클래스에서는, 의도에 맞게 \(\texttt{static}\) 데이터 멤버를 수정하는 작업을 복사 생성자에도 구현해놓아야 한다. (디폴트 복사 생성자는..

Computer Science/C & C++

[C++] Special Member Function | 기본 제공 멤버 함수

Special Member Function 특별 멤버 함수 - 클래스 객체 사용 시에 필수적이지만, 사용자가 정의하지 않은 경우 C++이 자동으로 정의하는 멤버 함수를 총칭하는 용어이다. - 아래 메서드들은 조건에 부합하는 경우에 C++ 컴파일러가 자동으로 정의하는 메서드들이다. Default Constructor ; 생성자가 전혀 정의되어 있지 않은 경우 Default Destructor ; 파괴자가 전혀 정의되어 있지 않은 경우 - 컴파일러가 만든 디폴트 파괴자 정의 내부는 비어있다. Copy Constructor ; 복사 생성자가 전혀 정의되어 있지 않은 경우 Assignment Operator ; 대입 연산자를 따로 정의(오버로딩)하지 않은 경우 Address Operator ; 주소 연산자를 정..

Computer Science/C & C++

[C++] Conversion Function | 변환 함수

Conversion Function 변환 함수 - C++ 연산자 함수의 특별한 형태이다. - 사용자 정의 강제 데이터형 변환 기능을 구현하는 수단이다. - \(\texttt{dataType variables = objectName;}\)과 같은 구문을 가능하게 만든다. Conversion Function Definition (변환 함수 정의) // Ex. 변환 함수 원형의 일반형 operator typeName(); - \(\texttt{typeName}\)형으로의 형변환을 구현하기 위해서는, 위와 같은 연산자 함수가 구현되어야 한다. - 변환 함수는 해당 클래스의 멤버 함수이어야 한다. - 변환 함수는 리턴형을 가지지 않는다. (함수명 \(\texttt{typeName}\)으로 어떤 데이터형으로 변환(..

Computer Science/C & C++

[C++] Random Number Generation | 난수 생성

Random Number Generation 난수 생성 - C++에서는 \(\texttt{rand(), srand(), time()}\) 라이브러리로 난수를 발생시키는 프로그램을 작성할 수 있다. - C++11부터는 \(\texttt{}\) 헤더파일을 통해 확장된 난수 제어 기능을 제공한다. \(\texttt{rand()}\) Function (\(\texttt{rand()}\) 함수) - Prototype : \(\texttt{int rand (void);}\) - C++의 \(\texttt{}\) 헤더파일에 정의되어 있다. - 0 ~ 32767 사이의 정수 중 하나의 수를 리턴한다. (32767(\(\texttt{0x7FFF}\))은 헤더파일 내에 기호상수로 \(\texttt{RAND_MAX}\)라 ..

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