Visual Studio 12

C++ 추상 클래스와 인터페이스 활용법

C++ 추상 클래스와 인터페이스 활용법C++ 객체지향 프로그래밍(OOP)에서 추상 클래스(Abstract Class)는 공통 인터페이스를 정의하고,이를 상속받는 파생 클래스에서 구체적인 기능을 구현하도록 강제하는 중요한 도구입니다. 순수 가상 함수(pure virtual function)를 포함한 클래스를 추상 클래스라고 하며,직접 객체를 생성할 수 없고 상속을 통해서만 사용 가능합니다. 1. 추상 클래스 기본추상 클래스는 하나 이상의 순수 가상 함수가 포함된 클래스입니다.순수 가상 함수는 `= 0`으로 선언하며, 자식 클래스에서 반드시 오버라이딩해야 합니다.#include using namespace std;class Shape {public: virtual void Draw() = 0; // 순..

c++ 2025.09.21

C++ 클래스 상속과 다형성 활용법

C++ 클래스 상속과 다형성 활용법 객체지향 프로그래밍(OOP)에서 상속(Inheritance)과 다형성(Polymorphism)은 핵심 개념입니다.C++에서는 클래스를 기반으로 코드 재사용성과 확장성을 높이고, 다양한 객체를 공통 인터페이스로 처리할 수 있습니다. 이번 글에서는 C++에서 상속을 구현하는 방법과 가상 함수, 함수 오버라이딩, 추상 클래스 활용법까지 실전 예제와 함께 설명합니다.1. 상속 기본C++에서 상속은 부모 클래스(기반 클래스)의 멤버를 자식 클래스(파생 클래스)에서 재사용하고 확장할 때 사용합니다.기본 문법은 다음과 같습니다.#include using namespace std;class Animal {public: void Eat() { cout 상속 종류에 따라 접근 범..

c++ 2025.09.21

C++ 연산자 오버로딩 사용법

C++ 연산자 오버로딩 사용법과 주의사항 C++에서는 기존 연산자(+,-,*,= 등)를 '사용자 정의 타입에 맞게 동작' 하도록 재정의할 수 있습니다.이를 연산자 오버로딩(Operator Overloading)이라고 합니다. 연산자 오버로딩을 사용하면, 클래스 객체끼리도 직관적으로 연산이 가능해지고, 코드 가독성이 높아집니다.하지만 잘못 구현하면 의도치 않은 동작이나 성능 문제를 발생시킬 수 있으므로 주의가 필요합니다. 1. 연산자 오버로딩 기본 문법연산자 오버로딩은 클래스 안에서 operator연산자 형식으로 함수를 정의합니다.예를 들어, 두 개의 Point 객체를 더하는 + 연산자를 오버로딩하려면 다음과 같이 작성합니다.#include using namespace std;class Point {pub..

c++ 2025.09.21

[C++ STL 시리즈] 6편: unordered_set과 unordered_map 사용법

C++ STL 시리즈 6편: unordered_set과 unordered_map 사용법지난 글에서는 set과 map을 살펴보았습니다. 이번 글에서는 STL의 unordered_set과 unordered_map 컨테이너를 다루겠습니다.이 컨테이너들은 해시(Hash) 기반 자료구조를 사용하여, set과 map보다 검색, 삽입, 삭제 속도가 빠릅니다.특히 데이터 순서가 중요하지 않을 때 효율적입니다.1. unordered_set이란?unordered_set은 중복 없는 원소 집합 을 저장하며, 요소는 정렬되지 않고 해시 테이블에 저장됩니다.따라서 삽입, 삭제, 검색 모두 평균적으로 O(1) 시간에 수행됩니다.순서가 중요하지 않고 빠른 조회가 필요한 경우에 유용합니다. unordered_set 선언과 초기화#i..

c++ 2025.09.20

[C++ STL 시리즈] 5편: set과 map 사용법

C++ STL 시리즈 5편: set과 map 사용법지난 글에서는 STL의 stack과 queue를 살펴보았습니다.이번 글에서는 C++ STL에서 제공하는 **set과 map** 컨테이너를 다루겠습니다.두 컨테이너는 모두 데이터를 **자동 정렬**하며, 중복을 관리할 수 있어 효율적인 데이터 검색과 저장이 가능합니다. 1. set이란?set은 **중복 없는 원소의 집합**을 표현하는 컨테이너입니다.요소는 항상 정렬되어 저장되며, 삽입, 삭제, 검색이 효율적입니다.set은 내부적으로 **이진 검색 트리(Binary Search Tree)**를 사용하기 때문에 O(log n) 시간에 연산이 가능합니다. set 선언과 초기화#include #include using namespace std;int main() ..

c++ 2025.09.20

[C++ STL 시리즈] 4편: stack과 queue 사용법

C++ STL 시리즈 4편: stack과 queue 사용법지난 글에서는 STL의 deque 컨테이너 사용법을 살펴보았습니다.이번 글에서는 STL에서 제공하는 **stack과 queue** 컨테이너를 정리하겠습니다.두 컨테이너 모두 FIFO(First In First Out) 또는 LIFO(Last In First Out) 구조를 구현할 수 있는 자료구조로,자료를 순차적으로 처리할 때 유용합니다. 1. stack이란?stack은 **LIFO(Last In First Out)** 구조입니다.즉, 가장 나중에 추가한 요소가 가장 먼저 삭제됩니다.스택은 프로그램의 함수 호출, 되돌리기(undo) 기능 등에서 사용됩니다. stack 선언과 초기화#include #include using namespace std;..

c++ 2025.09.20

[C++ STL 시리즈] 3편: deque 사용

C++ STL 시리즈 3편: deque 사용법지난 글에서는 STL의 list 컨테이너를 살펴보았습니다.이번 글에서는 STL의 deque(Double Ended Queue) 컨테이너를 다뤄보겠습니다.deque는 vector와 list의 장점을 결합한 자료구조로, 양쪽 끝에서 삽입과 삭제가 모두 빠릅니다. 1. deque란?deque는 양쪽 끝에서 요소를 삽입(push)하거나 삭제(pop)할 수 있는 컨테이너입니다.vector처럼 임의 접근이 가능하며, list처럼 앞뒤 삽입과 삭제가 효율적입니다.따라서 큐(Queue)나 스택(Stack)을 구현할 때 매우 유용합니다. deque 선언과 초기화#include #include using namespace std;int main() { deque dq; ..

c++ 2025.09.20

[C++ STL 시리즈] 2편: list 사용법

C++ STL 시리즈 2편: list 사용법지난 글에서는 STL의 기본 개념과 vector 사용법을 다뤘습니다.이번 글에서는 **STL의 list 컨테이너**를 자세히 살펴보겠습니다.list는 **이중 연결 리스트(Doubly Linked List)** 구조로, 삽입과 삭제가 빈번한 상황에서 vector보다 효율적입니다. 1. list란?list는 STL 컨테이너 중 하나로, 메모리 상에서 요소가 연결 리스트 형태로 저장됩니다.vector와 달리 **임의 접근(Random Access)은 불가능**하지만,삽입과 삭제가 리스트 내 어느 위치에서든 O(1) 시간에 수행될 수 있습니다. list 선언과 초기화#include #include using namespace std;int main() { lis..

c++ 2025.09.19

[C++ STL 시리즈] 1편: STL 개요 및 vector 사용법

C++ STL 시리즈 1편: STL 개요와 vector 사용법 C++ 프로그래밍을 하다 보면 자료구조와 알고리즘을 직접 구현해야 하는 경우가 많습니다.하지만 C++에서는 이미 구현된 표준 라이브러리인 STL(Standard Template Library)을 제공합니다.STL은 효율적이고 안정적인 자료구조와 알고리즘을 제공하여, 개발자가 직접 구현하지 않고도 쉽게 사용할 수 있게 도와줍니다. 1. STL의 구성 요소STL은 크게 컨테이너(Containers), 알고리즘(Algorithms), 반복자(Iterators)로 구성됩니다.컨테이너(Containers): 데이터를 저장하고 관리하는 자료구조입니다. 예: vector, list, deque, set, map알고리즘(Algorithms): 컨테이너에 적..

c++ 2025.09.19

Visual Studio C++ MFC CRect 사용법

Visual Studio C++ MFC에서 CRect 사용법MFC 프로그래밍에서 **사각형(Rectangle)** 영역을 다루어야 할 때 매우 유용한 클래스가 있습니다.바로 CRect 클래스입니다.CRect는 윈도우 좌표 기반의 사각형 정보를 관리하고, 다양한 편의 함수를 제공하여 GUI 프로그래밍을 쉽게 만들어줍니다. CRect란?CRect는 MFC에서 제공하는 사각형 클래스입니다.네 개의 정수 좌표 left, top, right, bottom으로 사각형을 정의하며,크기 계산, 이동, 충돌 검사 등 다양한 기능을 제공합니다. CRect 기본 선언CRect rect(10, 20, 200, 150); // left, top, right, bottom left : 사각형 왼쪽 좌표top : 사각형 위쪽 좌..

c++ 2025.09.18