오늘은 C++의 개체지향 프로그래밍 부분을 공부하고 정리한 내용을 포스팅 해 보려고 한다. 양이 많아서 두 번의 포스팅에 나누어서 적어보려고 한다. 개체지향 프로그래밍 개념은 C++에만 있는 건 아니다. Java에도 있고 다른 많은 언어에도 있다. Java로 예를 들면, 다음과 같은 개념들은 자바와 C++ 모두 있는 것들이다. 클래스 개체 생성자 함수 오버로딩 힙에 개체 생성하기 등 하지만 자바에는 없고 C++에만 있는 개념들도 있다. 예를 들면 스택에 개체 생성하기 복사 생성자 소멸자 연산자 오버로딩 등 C++은 OOP와 OOP가 아닌 것들을 섞어서 쓸 수 있다는 장점도 가지고 있다. 자바는 OOP에 관해서 엄격한 편이지만, C++은 C의 후방호환성을 가지고 있어서 유연하다는 장점이 있다. OOP의 핵..
스택
이번에 살펴볼 부분은 스택과 큐이다. 스택 스택(Stack)은 후입선출(Last In First Out: LIFO)의 선형 자료구조이다. 데이터를 쌓아 올린다는 의미에서 더미(stack)라는 이름이 붙었다. 입력은 push, 출력은 pop, 그리고 가장 위에 있는 데이터를 확인하는 방법은 peek라고 한다. 바닥이 막힌 상자라고 이해하면 쉬운데, 그렇기 때문에 나중에 넣은 물건이 위에 있으므로 먼저 꺼낼 수 밖에 없다. 스택을 구현하는 방법을 살펴보자. 스택에서 필요한 함수는 위에서 언급한 push, pop, peek 그리고 하나를 더 추가한다면 스택이 비었는지 아닌지를 확인하는 isEmpty 함수 정도가 될 것 같다. 배열과 다르게 스택은 한 번에 i(인덱스)번째 데이터에 접근할 수는 없다. 다만 삽입..