Archive — Archive

전체 글

Academic
Computer Science/C & C++

[C++] Class Constructor | 클래스 생성자

Class Constructor 클래스 생성자 - 클래스에 반드시 포함되는 특별한 멤버 함수 중 하나이다. - 해당 클래스를 통해 데이터 객체가 생성되면 프로그램에 의해 자동으로 호출되는 메서드이다. - 새로운 데이터 객체를 생성하고 그들의 데이터 멤버에 값을 대입하는 등의 기본적인 연산을 수행한다. (사용자가 어떻게 정의하느냐에 따라 다양한 작업들도 수행할 수 있다.) Constructor Definition (생성자 정의) - 생성자는 별도의 리턴형을 가지지 않는다.(\(\texttt{void}\)형에도 해당되지 않는다.) - 생성자의 이름은 해당 클래스의 이름과 동일하다. - 각각의 생성자들끼리는 함수 Signature(매개변수 정보)를 달리하여, 생성자 또한 오버로딩이 가능하다. (즉, 각각의 생..

Computer Science/C & C++

[C++] Class | 클래스

Class 클래스 - C++에서 사용자 정의 데이터형*을 Abstraction(추상화)** 기법을 통해 정의할 수 있게하는 수단이다. - 클래스는 Data Member(데이터)와 Member Function(Method; 데이터를 조작하는 수단)로 구성된다. - 메서드 없이 데이터만 존재하는 구조체와는 대조적이며, 이 때문에 구조체를 Plain-Old Data 구조(POD 구조)라고 부르기도 한다. - 데이터와 메서드를 구분지음으로써 Data Capsulation(데이터 캡슐화)***을 구현한다. * Specifying Basic Type (기본형의 서술) - 데이터의 기본형을 서술하기 위해서는 아래 3가지를 결정해야 한다. - Built-in Data Type(내장된 기본 데이터형)의 경우, 아래와 같..

Computer Science/C & C++

[C++] Namespace | 이름 공간

Namespace 이름 공간 - C++에서 이름 사용 범위를 제어하는 기능이다. - 대규모의 프로그래밍 프로젝트에서 변수나 함수와 같은 이름이 중복되어 생기는 문제*에 대한 해결책이다. * Namespace Problem (이름 공간 문제) : 두 라이브러리에서 같은 이름의 변수, 함수가 정의되어 있어서 생기는 충돌 문제이다. Declarative Region (선언 영역) - 말 그대로, 선언할 수 있는 영역을 의미한다. ex) 전역 변수의 선언 영역 : 모든 함수의 바깥 영역 ex) 함수 내의 지역 변수의 선언 영역 : 해당 함수 내부 - \(\texttt{namespace}\)는 이름을 선언하는 영역을 따로 제공하는 기능이다. Potential Scope (잠재 사용 범위) - 해당 변수를 선언한 ..

Computer Science/C & C++

[C++] cv Specifier | const-volatile 제한자 (정보 취합하기!)

Specifier 제한자 - 제한자는 크게 Strorage Class Specifier(기억 공간 제한자)와 cv Specifier(\(\texttt{const-volatile}\) 제한자)로 분류된다. cv Specifier (\(\texttt{const-volatile}\) 제한자) - \(\texttt{const}\) 제한자와 \(\texttt{volatile}\) 제한자를 통칭하는 용어이다. \(\texttt{const}\) Specifier (\(\texttt{const}\) 제한자) - 처음 초기화된 후에는 프로그램이 해당 변수의 메모리 공간을 변경할 수 없게하는 제한자이다. - \(\texttt{const}\) 키워드가 붙을 수 있는 위치는 크게 세 가지로 나뉜다. 1. 리턴형 앞 const..

Computer Science/C & C++

[C++] Storage Class Specifier | 기억 공간 제한자 (정보 취합하기!)

Specifier 제한자 - 제한자는 크게 Strorage Class Specifier(기억 공간 제한자)와 cv Specifier(\(\texttt{const-volatile}\) 제한자)로 분류된다. Storage Class Specifier (기억 공간 제한자) \(\texttt{register}\) \(\texttt{static}\) \(\texttt{extern}\) \(\texttt{mutable}\) \(\texttt{thread_local}\) (C++11 이상) ※ \(\texttt{auto}\) 키워드는 C++11부터 제한자가 아닌 데이터형의 역할을 수행한다. \(\texttt{register}\) Specifier - C++11 이전 버전에서는 레지스터 기억 공간을 지정하는 선언에 사..

Computer Science/C & C++

[C++] Linkage | 링크

Linkage 링크 - 서로 다른 File(Translation Unit)들이 같은 이름(변수나 함수와 같은)을 공유하는 것을 의미한다. - 공유하는 영역에 따라 External Linkage(외부 링크), Internal Linkage(내부 링크)로 나뉜다. * Linkage에 따른 변수 인식 우선순위 지역 변수 > Internal Linkage > External Linkage Language Linking (언어 링크) - 링커는 기본적으로 구별되는 각 함수마다 서로 다른 기호 이름을 요구한다. * C Language Linking (C언어 링크) - C 함수의 이름이 중복되는 것을 불허하기 때문에 하나의 함수에 하나의 이름만 부여된다. - 위와 같은 이유로, C에서는 비교적 함수 기호 이름 부여를..

Computer Science/C & C++

[C++] Scope | 사용 범위

Scope 사용 범위 - 어떤 이름(변수나 함수와 같은)이 한 File(Translation Unit) 안에서 얼마나 널리 사용가능한지를 구분지어놓은 개념이다. Local Scope = Block Scope (지역 사용 범위, 블록 사용 범위) - 이 영역의 이름들은 이 이름들을 정의한 블록 안에서만 사용 가능하다. - 자동 변수가 이에 해당된다. - 전역 사용 범위의 이름과 지역 사용 범위의 이름이 겹칠 경우, 지역 변수가 우선시 된다. (이를 두고, "new definition hides the prior definition." ("새 정의가 이전 정의의 앞을 가린다.")라고 표현한다.) Global Scope = File Scope (전역 사용 범위, 파일 사용 범위) - 이 영역의 이름들은 정의된..

Computer Science/C & C++

[C++] Storage Duration | 기억 존속 시간

Storage Duration 기억 존속 시간 - 메모리에 데이터를 저장하고 있는 시간을 구간별로 나누어 놓은 개념이다. - 데이터의 Lifespan(수명)이라 할 수 있다. * 다섯 가지 기억 공간에 대한 요약 Storage (기억 공간) Duration (기억 존속 시간) Scope (사용 범위) Linkage (링크) How Declared (선언 방법) Automatic 자동 블록 X 블록 안에 선언 Register 자동 블록 X 블록 안에 \(\texttt{register}\) 키워드를 통해 선언 Static with No Linkage 정적 블록 X 블록 안에 \(\texttt{static}\) 키워드를 통해 선언 Static with Internal Linkage 정적 파일 내부 함수 바깥에..

lww7438
Archive