Archive — Archive

전체 글

Academic
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}\)라 ..

Projects

[Project] Drunkard's Walk Problem | 주정뱅이의 마구잡이 걸음 문제

Drunkard's Walk Problem 주정뱅이의 마구잡이 걸음 문제 - 주정뱅이가 정중앙 기둥에서 시작하여 기둥으로부터 일정 거리를 벗어나기 위해 내딛는 걸음 수를 구하는 프로그램이다. - 내딛는 한 발 한 발은 이전에 내딛은 걸음의 방향과 무관하게 매번 마구잡이로 걷는다. - 벗어나고자 하는 거리와 보폭은 사용자로부터 입력받는다. - 마구잡이식 걸음을 구현하기 위해 표준 라이브러리 함수 중 \(\texttt{rand()}\), \(\texttt{srand()}\), \(\texttt{time()}\) 함수를 사용한다. - 주정뱅이의 걸음에 대한 방향을 제어하는 자료구조로 사용자 정의 클래스인 \(\texttt{Vector}\) 클래스가 정의되어 있는 \(\texttt{vect.h}\) 헤더파일을 ..

Computer Science/C & C++

[C++] friend | 프렌드

\(\texttt{friend}\) 프렌드 - 멤버 함수가 아닌 외부 함수를 해당 클래스의 전체 멤버에 접근 가능하게 만들어서* 해당 클래스의 멤버 함수와 동등한 접근 권한을 갖게 하는 C++의 키워드이다. ex) 클래스 외부에 정의된 일반 함수를 \(\texttt{friend}\)를 통해 클래스 내부로 Grant하면, 클래스의 멤버 함수인 것처럼 클래스의 멤버에 접근이 가능해진다. ex) A클래스에 B클래스를 \(\texttt{friend}\)로 Grant하면, B클래스의 멤버 함수들은 A클래스의 멤버 함수인 것 처럼 동작할 수 있다. - \(\texttt{friend}\) 키워드로 Grant 가능한 형태로 프렌드 함수, 프렌드 클래스 ,프렌드 멤버 함수 세 가지가 있다. ※ 프렌드 함수 개념을 이용하..

Computer Science/C & C++

[C++] Operator Overloading | 연산자 오버로딩

Operator Overloading 연산자 오버로딩 - 이미 정의되어 있는 연산자를 사용자 정의 데이터형에 최적화시키는 기능이다. - C++의 Polymorphism(다형)적 특성을 잘 보여주는 기능이며, OOP가 지향하는 내부 구현사항의 추상화의 목적에 부합한다. // Ex. 오버로딩된 덧셈 연산자(+)의 사용 예시 // (x.1 class Stock { ... }; Stock st1, st2; ... st1 = st1 + st2; // 사용자 정의 클래스의 객체인 st1과 st2를 직접적으로 더하고 있다. // Ex.2 for (int i = 0; i < 20; i++) evening[i] = sam[i] + janet[i]; // 덧셈 연산자를 해당 자료형에 오버로딩 시켜 덧셈 표현을 간소화 할 ..

Computer Science/C & C++

[C++] this Pointer | this 포인터

\(\texttt{this}\) Pointer \(\texttt{this}\) 포인터 - 클래스 객체와 관련이 있는 포인터이다. - \(\texttt{this}\) 포인터는 멤버 함수를 호출한 객체 "자기 자신"을 지시하는 포인터이다. - 기본적으로, \(\texttt{this}\)는 해당 메서드에 숨은 매개변수로써 프로그래머가 모르게 전달된다. (모든 클래스 메서드들은 호출한 객체의 주솟값을 가진 하나의 \(\texttt{this}\) 포인터를 가진다.) - \(\texttt{this}\) 포인터는 특히, 하나의 메서드가 두 개의 데이터 객체를 동시에 처리할 때 유용하게 쓰인다. // Ex. this 포인터의 약식 표기 예시 class Person { private: std::string name; i..

Computer Science/C & C++

[C++] Class Destructor | 클래스 파괴자

Class Destructor 클래스 파괴자 - 객체의 수명이 다하는 시점에 프로그램이 실행시키는 특별한 메서드이다. - Class Constructor(클래스 생성자)와 반대되는 기능을 하는 메서드이다. Destructor Definition (파괴자 정의) - 파괴자는 별도의 리턴형을 가지지 않는다. (\(\texttt{void}\)형에도 해당되지 않는다.) - 파괴자의 이름은 \(\sim\) Operator (Tilde Operator) 을 클래스 이름 앞에 붙이는 것으로 고정된다. - 파괴자는 생성자와 달리, 매개변수를 가져서는 안된다. (즉, 파괴자는 이름이 고정되어 있고, 매개변수를 가져서는 안되므로 한 클래스에 딱 하나만 존재하게 된다.) // Ex. 파괴자 정의 예시 class Stock ..

lww7438
Archive