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

Computer Science/C & C++

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 정적 파일 내부 함수 바깥에..

Computer Science/C & C++

[C++] Separate Compilation | 분할 컴파일

Separate Compilation 분할 컴파일 - 프로그램을 구성하는 함수들을 별개의 파일에 넣는 개발방법을 의미한다. (C++에서의 권고사항이기도 하다.) - 대규모 프로젝트에서 프로그램의 관리를 용이하게 하는 개발방법이다. - 분할된 파일들은 개별적으로 컴파일되어, 하나의 최종 실행 프로그램으로 링크된다. - 코드를 분할함으로써, 프로그램 개발 후 수정사항이 생겼을 때 수정한 부분에 해당하는 파일만 다시 컴파일하는 것이 가능해진다. - Embarcadero C++ Builder, Microsoft Visual C++, Apple Xcode, Freescale CodeWarrior와 같은 대부분의 IDE(Intergrated Development Environment, 통합 개발 환경)들에서 Pro..

Computer Science/C & C++

[C++] Overload Resolution | 오버로딩 분석

Overload Resolution 오버로딩 분석 - 어떤 함수 호출에 대하여, 여러 함수 중(함수 오버로딩으로 인한) 어느것을 사용할 것인지에 대한 C++의 전략이다. - 전 분석 과정에서, Function Signature만을 고려하며, 함수의 리턴형은 고려대상이 아니다. Resolution Process (분석 과정) Phase 1. 후보함수 목록 작성 -호출된 함수와 이름이 동일한 함수와 함수 템플릿들 모아서 후보함수 목록을 만든다. Phase 2. Function Signature를 통한 필터링 - 매개변수후보함수들 중, 매개변수의 개수가 일치하는 함수들을 찾아서 추린다. - Argument(실제 매개변수)의 각 데이터형이 Parameter(형식 매개변수)의 데이터형과 정확히 일치하는 경우도 여..

Computer Science/C & C++

[C++] Function Template | 함수 템플릿

Function Template 함수 템플릿 - Generic Function(일반화 함수)을 서술하는 방법이다. - Specific Type(\(\texttt{int}\)형이나 \(\texttt{double}\)형과 같은)* 을 포괄할 수 있는 Generic Type으로 함수를 정의하는 방법이다. (하나의 케이스가 아닌, 다른 경우에도 대응하여 프로그래밍 하는 것을 Generic Programming(일반화 프로그래밍)이라고 한다.) - 다양한 데이터형**에 대해 같은 알고리즘을 적용해야 할 경우에 유용한 수단이다. - 템플릿을 Parameterized Type(매개변수화 데이터)이라고 하기도 한다. - 여러 개의 함수 정의를 더 간단하고 신뢰성 높게 생성하게 해준다. - 템플릿을 구현하는 것은, 함수..

Computer Science/C & C++

[C++] Function Overloading | 함수 오버로딩

Function Overloading 함수 오버로딩 - Function Polymorphism(함수의 다형; 함수의 다양한 형태)을 C++에서 구현하는 방법이다. - 서로 다른 여러 개의 함수가 하나의 이름을 공유하게 하는 방법이다. - 함수 오버로딩은 본질적을 같은 일을 처리하지만, Function Signature(매개변수 리스트에 대한 정보)* 가 서로 다른 여러 개의 함수를 하나의 이름으로 만들 수 있게 한다. (오버로딩된 함수들 마다 논리적으로 다른 작업을 수행하게 구현할 수도 있으나, 기본적으로 같은 작업을 수행하도록 구현하는 것이 코드 가독성 측면에서 바람직하다.) - 오버로딩된 함수들은 오직 함수 시그니처에 의해서만 구분지어지며, 함수의 리턴 데이터형과는 관계가 없다. (위와 같은 이유에서..

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