C++ 52

10. STL - (2) 컨테이너

STL◆ 클래스 템플릿 매개 변수 ● Sequential 컨테이너 ☞ 삽입 순서를 유지하는 컨테이너 ☞ array, vector, list, forward_list, deque ● Assicuative 컨테이너 ☞ 순서가 없거나, 미리 정해진 규칙에 따라 저장하는 컨테이너 ☞ set, multi set, map, multi map ● 컨테이너 어댑터 ☞ 다른 컨테이너들의 변형 응용 ☞ stack, queue, priority queue📚 STL 컨테이너STL의 컨테이너(container)는 데이터를 저장하기 위한 객체이며, 다음 세 가지 유형으로 분류된다.◆ 1..

C++/C++ : Study 00:27:38

10. STL - (1) 개요

Standard Template Library (STL)📚 C++ STL 개요C++ STL은 Standard Template Library의 약자로, C++ 표준 라이브러리에 포함된 자료구조와 알고리즘의 모음이다.STL은 기본적으로 템플릿 기반으로 구현되어 있으며, 자료형에 독립적인 코드 작성을 가능하게 한다. 따라서 템플릿을 잘 이해하면 STL의 구조와 동작 방식을 더욱 쉽게 파악할 수 있다.템플릿은 C++에서 제네릭 프로그래밍을 지원하는 핵심 기능으로, STL은 이 기능을 바탕으로 구성되어 있다. 따라서 STL을 제대로 활용하기 위해서는 템플릿에 대한 이해가 선행되어야 한다.프로그래밍 업무에서 STL은 매우 자주 사용되며, 개발자의 생산성을 높이는 데 큰 역할을 한다. 특히 반복적인 자료구조 구현 ..

C++/C++ : Study 2025.07.07

8. 연산자 오버로딩 (5) - Ostream 객체

Stream Insertion and Extraction Overloading◆ 스트림 삽입 및 추출 연산자 오버로딩 Point p1{ 10,20 }; Point p2{ 30,40 }; p1.showPosition(); // [10,20] p2.showPosition(); // [30,40] // * 복잡한 멤버 함수 대신 cout > p3; // 50 60 // * 기본 자료형처럼 stream 입력도 가능하도록 한다.🔹 기존 방식: 출력 전용 함수 사용지금까지 객체의 좌표 값을 확인하려면 ShowPosition()과 같은 멤버 함수를 따로 정의하여 호출했다.이 방식은 기본적인 접근이지만 매번 함수를 호출해야 하고, std::cout과 직접 연결되지 않아 불편하다..

C++/C++ : Study 2025.06.16

다형성(6) - 인터페이스

중요한 Part이다.★★★★★Abstract Classes and Interface◆ 추상 클래스를 사용한 인터페이스 클래스 ● 순수 가상 함수 "만"을 가진 추상 클래스를 인터페이스 클래스라고 한다. ☞ C# , Java 언어는 따로 interface라는 키워드로 인터페이스 구현 가능 ● 클래스의 사용에 있어 일반적인 기능(서비스)을 묶어 놓은 클래스 ● 인터페이스 클래스를 기반으로 한 구상 클래스는 모든 기능(함수/서비스)를 구현해야 한다. ● 인터페이스는 껍데기(?) 이다. ● 유도 클래스가 꼭 가져야 하는 기능들을 명시해 놓기 위해서 사용한다.추상클래스를 사용해서 인터페이스를 만들 수 있다. 개념적 의미로는 클래스가 순수 가상함수를 많이..

C++/C++ : Study 2025.05.30

다형성(5) - 순수 가상 함수와 추상 클래스

Pure Virtual Functions and Abstract Classes◆ 추상 클래스 (Abstract Class) ● 객체를 생성할 수 없는 클래스 ● 상속 계층 구조에서 기본 클래스로 사용됨 ● 아주 일반적이어서 객체를 생성하기엔 맞지 않다 ☞ Entity , Account (어떤 객체인지 확인 어려움)◆ 구상 클래스 (Concrete Class) ● 객체를 생성할 수 있는 클래스 ● 모든 멤버 함수가 구현되어 있어야 한다 ☞ 지금까지 예시로 든 모든 클래스는 구상 클래스virtual 함수를 만들어서 오버라이딩을 했을 때 어떤 명령문에서 어떤 함수가 호출되는지 설계할 때 알아두어야 한다. 어떻게 동작하는지 정확하게 아는 것이 ..

C++/C++ : Study 2025.05.29

다형성 (4) - overrider & Final 지정자

override Specifier◆ override 지정자 ● (복습) 기본 클래스의 가상 함수는 오버라이드 가능하다. ● (복습) 오버라이드를 위해서는 함수의 원형과 반환형이 동일해야 한다. ☞ 만일 다르다면, 오버라이드가 아닌 "재정의"가 되어버린다. (서로 다른 별개의 함수로 인식) ☞ 재정의는 정작 바인딩 ● C++ 11부터 override 지정자 기능을 제공하여 오버라이딩 시 실수를 방지하고, 코드의 가독성을 상승할 수 있다. ☞ 어떤 함수가 오버라이딩 된 함수인지 정의만 보고도 파악 가능복습 겸 기존 개념을 다시 설명한다. 기본 클래스의 가상 함수는 오버라이드가 가능하며 오버라이드를 하기 위해서는 함수의 원형 반환형이 ..

C++/C++ : Study 2025.05.18

다형성(2) - 동적 바인딩 & 가상 함수

Polymorphism◆ 동적 바인딩의 예시 1 Entity entity{ 0,0 }; entity.Move(1, 1); // Entity::Move() Player player{ 0,0,2 }; player.Move(1, 1); //Player::Move() Boss boss{ 0,0,2 }; boss.Move(1, 1); //Boss::Move() Entity* ePtr = new Boss{ 0,0,2 }; ePtr->Move(1, 1); // Boss::Move() => 동적 바인딩 * 컴파일러는 런타임에 ePtr의 실제 타입을 확인하고, 해당 클래스의 멤버 함수를 호출함ePtr에 있는 Move() 함수를 호출할때 정적바인딩인 경우 : 객체 타입인 Entity* 를 보고 함수를 확인 동적 ..

C++/C++ : Study 2025.05.01

다형성(1) - 소개

Polymorphism◆ 다형성과 동적 바인딩◆ 가상 함수◆ 기본 클래스의 포인터 / 참조자◆ override / final 지정자◆ 순서 가상 함수와 추상 클래스◆ 추상 클래스와 인터페이스이번 강의는 객체 지향 프로그래밍(OOP)의 핵심 개념 중 하나인 다형성에 대해 다룬다.이는 OOP Part 1,2, 그리고 상속에 이어지는 내용으로 이번 학기의 가장 중요한 주제이다.다형성에 대해 공부해보자문법 자체는 어렵지 않으나, 헷갈릴 수 있는 요소들이 있을 수 있어 헷갈린 부분을 중점적으로 설명할 것이며, 학생들도 이해하기 어려운 부분을 주의 깊게 확인하길 권장한다.먼저 다형성과 동적 바인딩에 대해 알아보자.동적 바인딩과 반대되는 개념이 정적 바인딩이다.정적 바인딩은 지난 시간 마지막 부분에서 공부..

C++/C++ : Study 2025.04.27

상속(8) - 멤버의 사용

Using Member Function of Base Class중요한 Part이다.★★★★★◆ 기본 클래스의 멤버 함수 사용 ● 유도 클래스는 기본 클래스의 멤버 함수를 직접 호출 가능하다 ☞ public / protected 인 멤버 함수의 경우 ● 유도 클래스는 기본 클래스의 멤버 함수를 오버라이드 또는 재정의 가능하다 ● 다형성의 구현을 위해 중요한 기능이다.◆ 재정의로 인한 기본 클래스 함수가 가려질 경우, ● Base::Member()와 같은 형식으로 호출 가능하다상속과 멤버 함수 부분을 알아보자. 기본 클래스의 멤버함수를 사용하는 것, 유도 클래스는 기본 클래스의 멤버 함수를 직접 호출할 수 있다. 멤버 변수를 접근할 수 있는 것은 public이나 ..

C++/C++ : Study 2025.04.17

상속(7) - 복사 생성자

Copy Constructor◆  복사 생성자의 상속   ●  기본 클래스로부터 상속되지 않는다.    ●  (상속 전과 마찬가지로) 컴파일러가 자동 생성하지만, 필요한 경우 직접 구현해야 한다.    ●  기본 클래스에서 구현한 복사 생성자 호출 가능하다.복사 생성자도 생성자와 동일하다. 단지 인자가  const 참조자로 정해져 있는 것이다. 객체가 복사될 때 생성자가 호출하기 때문에 복사 생성자라고 표현한다.* 강의 듣다가 추가 내용정리 복사 생성자는 기본적으로 일반 생성자의 한 종류이다.복사 생성자 특징은1. 같은 클래스의 다른 객체를 참조로 받아 새 객체를 초기화한다.2. 매개변수가 반드시 같은 클래스의 const 참조여야 한다. ClassName(const ClassName& other); 여기..

C++/C++ : Study 2025.04.02