목록C++/Syntax, Features (5)
서의 공간
1. 복사 생성자 Shallow Copy 값이든 포인터이든 그대로 복사 Deep Copy 포인터이라면 값을 복사 2. 대입 연산자 a = b; 식에 왼쪽은 l-value(l: locator), 오른쪽은 r-value 왼쪽에는 변수가 와야하고, 오른쪽에는 변수 또는 상수가 와야함. 왼쪽에서는 overwrite가 발생하고, 오른쪽에서는 읽기가 발생함. 기본 데이터 타입의 연산에 대해 연산자 오버로딩은 불가능함.(int + int) 클래스간의 연산자 오버로딩이 가능 디폴트 대입 연산자는 Shallow Copy 한다. 복사 생성자를 구현하면 대입 연산자도 구현해야 한다. 3. 묵시적 변환 변환 생성자: 파라미터 1개를 갖는 생성자 클래스가 다른 함수의 파라미터로 넘어갈 때, 묵시적 변환이 이루어짐. class ..
템플릿 (C++) | Microsoft Docs C++는 객체지향 프로그래밍 언어일 뿐만 아니라 제네릭 프로그래밍(generic programming) 언어이기도 하다. 제네릭 프로그래밍의 목적은 재사용 가능한 코드를 만드는 것이다. 이것을 위한 가장 기본적인 도구가 바로 템플릿(template)이다. 템플릿은 데이터 타입을 값으로 파라미터화 한다. C++에서 기본 내장 타입 int와 double은 물론 MyObject, Pawn 같은 사용자 정의 클래스까지 포함한다. 템플릿을 이용하면 값에 독립적일 뿐만 아니라 그 값의 타입에도 독립적인 코드를 만들 수 있다. 컴파일러가 템플릿 클래스를 처리하는 방법 컴파일러가 템플릿 메서드 정의 코드를 만나면 문법은 검사하지만 실제로 컴파일은 하지 않는다. 어떤 타입..
Keywords (C++) | Microsoft Docs 1. alignas 더보기 정렬을 제어하는 키워드이다. DirectX 프로그래밍을 할 때 보통 상수 구조체의 데이터 멤버를 정렬할 때 쓴다. 이유는 C++에서 구조체를 메모리에 올렸을 때 구조체 멤버들을 정렬하는 규칙이 HLSL의 규칙과 안맞기 때문이다. HLSL에서 데이터 멤버들을 4차원 벡터단위로 채워 넣되 하나의 멤버가 두 개의 4차원 벡터에 걸쳐 나누어지면 안 된다는 제약을 지키기 위해 여분의 바이트들이 추가된다. 다음 예를 보면, // HLSL struct S { float3 Pos; float3 Dir; }; 이 구조체를 4차원 벡터에 채워 넣는다면 다음 모습과 같다. vector 1: (Pos.x, Pos.y, Pos.z, Dir.x)..
STL은 네 가지의 구성 요소로 이루어진다. Containers(컨테이너) Iterators(반복자) Algorithms(알고리즘) Functions(함수자) 1. Containers(컨테이너) STL 컨테이너는 데이터를 모아서 저장해둘 수 있는 제네릭 데이터 구조다. 더보기 컨테이너 클래스 컨테이너 타입 삽입 성능 삭제 성능 접근 성능 vector 시퀀스 컨테이너 끝부분에서 분할 상쇄 상수 시간 \(O(1)\), 임의의 위치 p로의 삽입은 \(O(N-p)\) 끝부분에서 분할 상쇄 상수 시간 \(O(1)\), 임의의 위치 p에서의 삭제는 \(O(N-p)\) \(O(1)\) list 시퀀스 컨테이너 \(O(1)\) \(O(1)\) \(O(N)\), 확률적으로 \(O(N/2)\) forward_list 시퀀..
[C++ 표준라이브러리 참조 MSDN]: C++ Standard Library Reference | Microsoft Docs 카테고리 헤더 알고리즘 , , 아토믹 연산 C 라이브러리 래퍼 , , , , , , , , , , , , , , , , , , , , , , , , , , 개념 컨테이너 시퀀스 컨테이너 , , , , 정렬된 연관 컨테이너 , 정렬되지 않은 연관 컨테이너 , 컨테이너 어댑터 , 컨테이너 뷰 오류 및 예외 처리 , , , 일반 유틸리티 , , , , , , , , , , , , , , , I/o 및 서식 지정 , , , ,, , , , , , , , , 반복기 언어 지원 , , , , , , , , , , , , , , ,, , 지역화 , , , , 수학 및 숫자 , , , , , ..