Programming | 프로그래밍 언어 16

C언어 기반의 C++ 2

const와 포인터 const의 의미 // int형 변수 num을 상수화 const int num = 10; // 상수만을 가리키는 포인터. 포인터 ptr1을 이용해서 val1의 값을 변경할 수 없다. // 가리키는 대상은 변경이 가능하지만(ptr1=&val2;), 가리키는 값은 변경할 수 없다. const int * ptr1 = &val; // 포인터 ptr2가 상수화 된다. 정수형 변수를 가리키는 상수형 포인터. // 포인터가 가리키는 대상은 변경할 수 없고, 가리키는 값은 변경이 가능하다(*ptr2=100;) int * const ptr2 = &val; // 가리키는 대상 및 값의 변경이 불가능하다. // 포인터 ptr3가 상수화 되었으며, ptr3를 이용해서 val3의 값을 변경할 수 없다. co..

Modern Cpp에 대해 정리하기 전 프리뷰

용어 사용 선언(declaration) : 코드에 사용되는 어떤 대상의 이름과 타입을 컴파일러에게 알려주는 것 std::size_t numDigits(int number); // 함수 선언 extern int x; // 객체 선언 class Widget; // 클래스 선언 template class GraphNode; // 템플릿 선언 시그니처(signature) : 함수의 매개변수 리스트와 반환 타입 위의 경우 numDigits 함수의 시그니처는 std::size_t(int) 정의(definition) : 선언에서 빠진 구체적인 세부사항을 컴파일러에게 제공하는 것 함수에 대한 정의는 함수에 대한 코드 본문을 제공하는것이다. 클래스에 대한 정의는 클래스의 멤버를 넣어 준 결과이다. 초기화(initiali..

auto의 형식 연역 규칙

auto 형식 연역 템플릿 형식 연역처럼 auto 형식 연역도 세 가지로 나뉘고 잘 동작한다. 한 가지 예외를 빼면 auto 형식 연역이 곧 템플릿 형식 연역이다. 템플릿 형식 연역과 다른점 C++에서의 변수 초기화 방식 // C++98에서 초기화 int x1 = 27; int x2(27); // 균일 초기화를 지원하는 C++11에서 추가된 초기화 int x = { 27 }; int x{ 27 }; auto를 통한 초기화 auto x = 27; auto x(27); auto x = { 27 }; auto x{ 27 }; 아래 두가지 초기화 방식은 값이 27인 원소 하나를 담은 std::initializer_list형식의 변수를 선언한다. auto로 선언된 변수의 초기치가 중괄호 쌍으로 감싸인 형태면 연역..

템플릿 형식 연역 규칙

템플릿 형식 연역 template void f(ParamType param); f(expr); 컴파일러는 expr을 이용해서 두 가지 형식을 연역한다. T ParamType 두 형식이 다른 경우가 많다. template void f(const T& param); int x = 0; f(x); T는 int로 연역되나 ParamType은 const int&로 연역된다. T에 대해 연역된 형식이 함수에 전달된 인수의 형식과 항상 같지는 않다. T에 대해 연역된 형식은 expr의 형식, ParamType의 형태에 의존한다. 형태에 따라 세가지 경우로 나뉜다. 경우 1: ParamType이 포인터 또는 참조 형식이지만 보편 참조는 아닐 경우 형식 연역 과정 expr이 참조 형식이면 참조 부분을 무시한다. expr..