목록Language/C++ (14)
devseop08 님의 블로그
표준 템플릿 라이브러리, STL은 C++ 언어가 제공하는 템플릿을 바탕으로 만든 컨테이너 클래스를 제공하는 라이브러리이다. 템플릿을 사용해 구현된 컨테이너들의 집합이다.벡터, 리스트, 큐 그리고 스택 등의 클래스 템플릿과 그 안에 저장된 데이터를 검색하고 정렬하는 등의 처리를 위한 함수들이 제공된다.STL의 목적은 프로그래머들이 많이 사용하는 공통적인 컨테이너 클래스를 제공하는 것이다.STL의 구성요소컨테이너: 객체 또는 기본 데이터 타입의 집합으로 각 컨테이너는 관련된 헤더 파일 포함 필요반복자: 컨테이너 요소들에 대한 순회 및 접근알고리즘: 컨테이너의 요소들을 다루기 위한 알고리즘(find, max, count, accumulate, sort, ...)컨테이너컨테이너는 데이터를 저장하는 것으로, 저장..
Generic Programming(일반화 프로그래밍)과 템플릿제네릭 프로그래밍이란 ? : 타입에 관계없이 동작하는 일반적인 코드를 작성하는 방법예를 들어, 여러 가지 덧셈을 수행하는 함수를 정의할 때, 기존에는 덧셈에 사용되는 인자들의 타입에 따라 개별적으로 함수들을 구현해야 했다.add(int i1, int i2), add(double d1, double d2), add(Point p1, Point p2)이를 하나의 함수로 구현할 수 있게 하는 기법이 제네릭 프로그래밍 기법이다.제네릭 프로그래밍의 구현 방법매크로 사용함수/ 클래스 템플릿 사용매크로를 사용한 제네릭 프로그래밍매크로(#define) : 코드의 단순 대체#include #define MAX(a, b) ((a>b)?a:b)int main(..
연산자 다중정의연산자 다중 정의란?C++의 연산자들은 C++에서 제공되는 기본 자료형에 대해서만 정의되어 있기 때문에 사용자가 정의한 클래스에 대해서는 적용할 수 없다.예를 들어 + 연산자는 int나 double 등의 자료형에 대해서는 정의되어 있지만 클래스 객체에 대해선느 정의돼있지 않다.Complex1 c1(10, 20);Complex1 c2(-5, 15);Complex1 c3 = c1 + c2; // Error - Complex1을 위한 + 연산자 없음복소수라는 것은 실수를 포함하는 수의 표현으로, 이에 대해서도 double형에서와 마찬가지로 사칙연산을 포함한 여러 가지 연산이 수학적으로 정의돼 있다.그러므로 Complex1 객체에 대해서도 이러한 연산을 사용할 수 있도록 하면 보다 자연스러운 문장..
기초 클래스와 파생 클래스객체지향 언어에서 상속은 계층관계를 사용하여 클래스 간의 속성 및 함수를 공유할 수 있도록 지원하는 매우 중요한 개념이다.객체지향 언어에서는 하나의 클래스를 다른 클래스의 속성을 상속받아 정의하는 기능을 제공한다.한 클래스가 다른 클래스의 한 가지 구체적인 예에 해당할 때 이 클래스 간에 'is-a' 관계가 있다고 말한다.상속하는 클래스들의 공통된 특징을 모두 보유하고 있는 클래스를 기초 클래스라고 한다.기초 클래스보다 더 자세한 속성을 갖는 클래스를 파생 클래스라고 한다.파생 클래스는 기초 클래스의 특성을 모두 포함하고 있으며 자신의 고유 특성을 추가로 갖고 있을 수 있다.파생 클래스를 표현할 때 기초 클래스의 특성들을 반복하여 표현할 필요가 없다.상속은 프로그램의 비슷한 특성..
1. 스코프블록복합 명령문이라고도 불리는 블록은 마치 한 명령문같이 보이는 명령문의 그룹이다.블록은 { 기호로 시작하고, } 기호로 끝나며, 기호 사이에 실행할 명령문을 배치한다.블록은 단일 명령문이 허용되는 모든 위치에서 사용할 수 있고, 블록 끝에는 세미콜론(;)이 필요하지 않다.int add(int x, int y){ // 시작 블록 (start a block) return x + y;} // 끝 블록 (end a block)int main(){ // start a block // 여러 명령문 (multiple statements) int value(0); add(3, 4); return 0;} // end a block (no semicolon)블록은 다른 블록 내부에 ..
연산자연산자의 우선 순위 및 결합 방향산술 연산자사칙 연산자나머지 연산자증감 연산자증감 연산자와 사이드 이펙트전위 증감 연산자는 값을 증가 또는 감소시킨 후에 값을 평가한다.int x = 5;int y = ++x; // x = 6, y =6후위 증감 연산자를 사용하는 경우엔 컴파일러가 변수의 임시 복사본을 만든 후에 원래 변수를 증가 또는 감소시키고 변수의 임시 복사본을 평가한다.평가가 종료되면 임시 복사본을 삭제시킨다.int x = 5;int y = x++; // x = 6, y = 5int x = 5, y = 5;std::cout 사이드 이펙트사이드 이펙트란, 함수나 표현식이 자신의 본래 목적(값 반환) 외에 프로그램의 상태나 외부 세계에 영향을 미치는 모든 행위를 말한다.즉, 사이드 이펙트란 함수 ..
1. 구조체구조체, structstd::string myName;int myBirthYear;int myBirthMonth;int myBirthDay;int myHeightInches;int myWeightPounds;자신에 대한 정보를 함수에 전달하려면 각 변수를 개별적으로 전달해야 한다.또한, 다른 사람에 대한 정보를 저장하려면 추가된 사람마다 6개의 변수를 추가로 선언해야 한다.다행히도 C++ 에서는 고유한 사용자 정의 집계 데이터 유형(user-defined aggregate data type)을 생성할 수 있다.집계 데이터 유형(aggregate data type)은 여러 개별 변수를 함께 그룹화하는 데이터 유형이다.가장 단순한 집계 데이터 유형 중 하나는 구조체(struct)다.즉, 구조체(s..
기초 클래스와 파생 클래스객체지향 언어에서 상속은 계층관계를 사용하여 클래스 간의 속성 및 함수를 공유할 수 있도록 지원하는 매우 중요한 개념이다.객체지향 언어에서는 하나의 클래스를 다른 클래스의 속성을 상속받아 정의하는 기능을 제공한다.한 클래스가 다른 클래스의 한 가지 구체적인 예에 해당할 때 이 클래스 간에 'is-a' 관계가 있다고 말한다.상속하는 클래스들의 공통된 특징을 모두 보유하고 있는 클래스를 기초 클래스라고 한다.기초 클래스보다 더 자세한 속성을 갖는 클래스를 파생 클래스라고 한다.파생 클래스는 기초 클래스의 특성을 모두 포함하고 있으며 자신의 고유 특성을 추가로 갖고 있을 수 있다.파생 클래스를 표현할 때 기초 클래스의 특성들을 반복하여 표현할 필요가 없다.상속은 프로그램의 비슷한 특성..