본문 바로가기

Windows Developer/C++

[C++]STL에 대해서(보충) [출처]http://blog.naver.com/hkn10004/20103075766 STL은 C++ 응용 프로그램의 고효율성을 위해 설계 되었다. STL의 구성요소들과 용어들에 대해 알아보자. 컨테이너 : 벡터, 리스트, 큐, 맵 같은 전통적인 데이터 추상과 조직화 구조이다. 반복자 : iterator는 컨테이너 안의 요소들에 대한 포이터라고 생각하면 된다. 알고리즘 : 반복자에 대한 작동하는 독립형 함수들의 형태. 특수화된 멤버 함수들로 컨테이너들에 대한 가장 기본적인 작업 들을 수행한다. 컨테이너를 다룰때에는 범위를 얻는 데 쓰이는 메서드들을 알아야 한다. begin()과 end()가 있는데 컨테이너의 시작과 끝을 알 수 있다. 컨테이너 [][][][].....[]|| begin().......end.. 더보기
[C++] 초기화 리스트(Initialize List) [출처] café.naver.com/cppmaster 1. 초기화 리스트란? 클래스의 각 멤버를 생성자에서 초기화 할 때 생성자 뒤에 콜론연산자(:)를 사용해서 객체의 멤버를 초기화 할 수 있다. 이를 초기화 리스트, 또는 콜론 초기화라고 한다. - 초기화 리스트를 사용하지 않은 경우 class Point { int x; int y; public: Point(int a, int b) { x = a; y = b; } }; - 초기화 리스트를 사용한 경우 class Point { int x; int y; public: Point(int a, int b) : x(a), y(b) { } }; 그럼 , 이와 같은 초기화 리스트를 사용하는 이유는 무엇일까? 초기화 리스트를 사용하는 이유는 크게 효율성과 필요성으로 .. 더보기
[C++] 형변환 연산자 [출처] http://blog.daum.net/coolprogramming/62 C++언어는 C언어를 포함하므로 C언어의 형변환을 사용할 수 있지만 C++언어 자체의 형변환 연산자를 제공합니다. (EC++에서 C스타일의 형변환보다는 C++ 스타일의 형변환을 사용하라고 권장합니다. C++ 스타일의 형변환을 사용하면 잘못된 형변환의 위험에서 좀 더 안전하며 설계자의 의도를 좀 더 확실히 할 수 있습니다.) ( ) C언어의 형변환 : 만능 형변환 = 무식한 형변환 = 불가능은 없다. - 컴파일 타임 형변환 - static_cast : 상식적인?! 형변환입니다. 여기서 상식적인 형변환이라 말한 이유는 상식적으로 생각했을 때 가능할 것 같은 형변환이기 때문입니다.(암시적 변환이 가능한 형변환을 명시적으로 변환한다.. 더보기
[C++] 가상함수 [출처] NetGong 2009.09.04 17:01 http://blog.daum.net/coolprogramming/69 먼저 간단히 부모와 자식간의 함수 호출을 설명하도록 하겠습니다. #include using namespace std; class Person { char name[20]; int age; public: Person(const char* n, int a) { strcpy(name, n); age = a; } void Eat(){ cout 더보기
[C++]템플릿(template) 템플릿은 두 가지가 있습니다. 함수 템플릿 : 함수를 만들어 내는 메타 함수 클래스 템플릿 : 클래스를 만들어 내는 메타 클래스 1, 함수 템플릿 함수 템플릿은 함수를 만들기 위한 메타 함수( 함수의 틀)입니다. 함수는 어떤 기능을 수행하는 연산들의 집합입니다. 만약 출력 기능을 하는 함수가 있다면 이 함수의 기능은 출력입니다. 이때 지금까지 공부한 함수는 출력할 데이터(정수, 실수, 문자, 문자열 등)가 무엇인지에 따라 여러개의 함수를 작성해야만 했습니다. 함수 템플릿을 사용하면 메타 함수만 만들어 놓고 출력할 데이터의 타입을 컴파일 시간에 결정하여 여러 함수를 자동으로 생성할 수 있습니다. 예를 들어 설명하겠습니다. 정수, 실수, 문자열을 출력하는 예제입니다. #include using namespa.. 더보기
[C++]STL 표준 C++ 라이브러리 STL은 표준 C++ 라이브러리의 일부분으로 Standard Template Library의 약자 입니다. STL은 사람마다 조금씩 다른 정의를 내립니다. C++권위자인 Scott Meyers는 STL을 "반봅자를 가지고 동장하는 C++ 표준 라이브러리의 일부분"이라고 정의했습니다 STL은 우리가 C++프로그래밍에서 만들어야 하는 여러가지 자료구조 클래스와 알고리즘 등을 미리 만들어 놓은 라이브러리로 반복자라는 놈을 통해서 동작하는 라이브러리입니다. STL의 주요 구성요소 컨테이너(Container) : 객체들을 저장하는 개개체 혹은 클래스(vector, list, string, map) 반복자(iterator) : 컨테이너에 저장된 요소를 순회하고 접근하는 객체 혹은 클래스(추상화) 알고리즘(Algor.. 더보기
[C++]상수 함수 1. 상수 함수의 기본 개념 C++ 에서는 멤버 함수뒤에 const를 붙일수가 있습니다. 일명 상수 함수라고 부르는 문법입니다. 상수함수안 에서는 모든 멤버를 상수 취급합니다. 즉, 멤버 data의 값을 읽을 수는 있지만 변경할 수는 없습니다. 아래 코드를 보세요 왜, 이런 상수 함수가 필요 할까요 ? 많은 책에서는 "안정성 때문에 사용한다" 라고 이야기 하지만 상수 함수가 꼭 필요한 경우가 있습니다. 2. 상수 객체와 멤버 함수 객체를 생성할 때 상수로 만들수가 있습니다. 다음의 경우를 생각해 보도록 하겠습니다. 당연히 A는 상수 객체의 값을 변경하려고 하고 있으므로 에러가 발생합니다. B는 어떨까요 ? 멤버 Data를 직접 접근하는 것이 아니라 Set()이라는 함수를 호출하고 있습니다. 이 경우 Se.. 더보기
[C++]객체지향 프로그램의 4대 특징 1. 추상화(abstraction) 객체들의 공통적인 특징을 뽑아내는 것이다. 즉, 우리가 구현하는 객체들이 가진 공통적인 데이터와 기능을 도출해 내는 것을 의미한다. 즉, "공통의 속성이나 기능을 묶어 이름을 붙이는 것" -> 클래스를 정의하는 과정이 추상화 과정이라고 할 수 있다. 2. 캡슐화(encapsulation) 데이터 구조와 데이터를 다루는 방법을 결합시켜 묶는 것을 말한다. 특정 객체가 독립적으로 역할을 제대로 수행가기 위해 필요한 데이터와 기능을 하나로 묶어 관리한다. 객체가 맡은 역할을 수행하기 위한 하나의 목적을 위해 데이터와 기능을 묶는 것이다. 다른 의미로도 쓰이는데 즉, 데이터는 은닉하고 그 데이터를 접근하는 기능을 밖으로 노출한다는 의미를 나타낼 때 캡슐화라는 용어를 쓴다. -.. 더보기
[C++] 절차지향 vs 객체지향 // 절차지향 코드 #include void startup(int *sp) { *sp = 0; cout 더보기