목록분류 전체보기 (156)
승쨩개발공부
STL Standard Template Library의 약자. -> 표준에 등록된 템플릿의 집합. C++에서 제공하는 라이브러리의 일종으로 프로그래밍에 필요한 자료구조 및 알고리즘을 클래스 템플릿화하여 제공한다. STL 구성 요소 ##1. 컨테이너 데이터를 저장하는 객체. 자료 구조를 저장하는 객체. 컨테이너의 종류 배열을 기반으로하는 vector 노드를 기반으로하는 list 트리를 기반으로하는 map 구분 기준 #1. 원소 배치 표준 시퀀스 컨테이너 -> 선형적인 구조 (일렬로 줄 지을 수 있는 구조) -> 특정 원소를 기준으로 앞, 뒤를 판단할 수 있다. ex) vector, list 표준 연관 컨테이너 -> 비 선형적인 구조 (일렬로 줄 지을 수 없는 구조) -> 특정 원소를 기준으로 앞, 뒤를 판..
템플릿 거푸집에 비유할 수 있다. 하나의 틀에서 자료형이 다른 함수/클래스를 만들 수 있는 것. 템플릿의 형태 1. 함수와 템플릿 -> 템플릿 함수 -> 컴파일 중 템플릿을 호출하는 코드라인을 컴파일할 떄 -> 컴파일러가 실제 함수의 코드를 생성한다. -> 안에 명시한 자료형이 함수 템플릿에서 정의한 T자리에 매칭이 된다. -> 사용자가 를 명시하지 않을 경우 인자의 타입에 따라 템플릿 함수가 생성된다. -> 템플릿 함수는 일반적으로 포인터간의 + 연산은 불가능하다 -> 하지만 템플릿의 특수화(오버로딩)를 통해서 합치는 방법이 있다. 두가지 이상의 자료형을 사용할 경우 클래스 템플릿 템플릿의 파일분할 -> 템플릿 클래스는 코드라인을 번역할 떄 클래스의 원형을 만들어 놓는다. -> 헤더파일을 include..
함수 객체 함수처럼 사용할 수 있는 객체 -> 객체가 매개변수를 받는 것. 함수 호출 연산자 오버로딩을 통해 구현할 수 있다. 함수 객체를 통해 Sort구현
임시객체 임시 메모리 영역이 등록된 객체이다. 일반 객체는 자료형 + 변수명으로 선언한다. 임시 객체는 변수명이 없다. 일반 객체 -> 함수가 종료될 떄까지 메모리에 상주한다. 임시 객체 -> 코드 라인을 벗어나는 즉시 소멸한다.
연산자 오버로딩(operator) 함수 오버로딩의 규칙을 연산자에 적용하는 문법 연산자 오버로딩은 연산자의 좌측 객체 기준으로 호출한다.(멤버 함수와 같음) operator+ 구현 operator= 구현 객체 생성과 동시에 대입은 복자 생성자의 호출이다 객체 생성 후 대입은 대입 연산자의 호출이다. (디폴트 대입 연산자) 디폴트 대입 연산자 또한 구현한 내용처럼 단순 대입이다. 멤버로 동적할당한 주소를 가지는 변수가 있을 경우에는 깊은 복사 방식으로 구현을 하는 것이 좋다. operator 객체 + 정수 구현 연산자 오버로딩은 좌측 객체 기준으로 수행한다. -> 하지만 다음과 같은 경우에는 좌측에 객체가 있는 것이 아닐 경우 호출이 불가능하다. -> 이를 해결하기 위해서는 교환 법칙을 구현하면 된다. 교..
인라인 함수 메크로 함수의 장점을 취하고 단점을 보완한 함수 매크로(define)의 단점 1. 디버깅이 불가능하다. 2. 복잡한 함수 구현이 불가능하다. 인라인 함수가 일반 함수로 바뀌는 경우 1. 함수 포인터로 사용할 경우 2. 재귀 형태로 호출할 경우 3. 컴파일러 마음 -> inline 키워드가 있어도 컴파일러의 판단에 따라 일반함수가 될 수도 있고, -> 반대로 inline 키워드가 없어도 인라인 함수가 될 수도 있다. 인라인 함수의 주의사항 헤더파일에 함수의 정의부까지 구현해야 한다. -> 그런데 헤더파일에 함수의 정의부를 모두 구현할 경우 파일 분할의 목적이 사라지게 된다. -> 그렇기 때문에 한줄 짜리만 대부분 인라인을 사용한다. 전역 함수일 경우 파일 분할 시 주의사항과 중복된 내용이 있기..