C++/C++ 기초 24

[C++] STL ( pair, vector, list, iterator, algorithm 사용 예시 코드 )

[C++] STL 정리 ( pair, vector, stack, queue, deque, map, set, algorithm ) STL(Standard Template Library) 는 C++ 에서 가장 자주 사용되는 라이브러리 중 하나입니다. PS (Problem Solving)을 공부하기 전에 필수적으로 익혀야 하는 라이브러리입니다. 문제를 푸는데 필요한 알고리즘 songsite123.tistory.com 위 포스팅에서 STL에 대해 전반적으로 총정리를 해봤습니다. 오늘은 이 중에서도 자주 사용되는 pair, vector, list 컨테이너에 대해 집중적으로 살펴보고 iterator 의 응용, 그리고 algorithm 을 사용해보는 방법까지 알아보도록 하겠습니다. STL(Standard Templa..

C++/C++ 기초 2023.07.18

[C++] 제네릭 클래스 ( Generic class )

[C++] 템플릿 ( Template ) - 함수 템플릿 / 클래스 템플릿 C++ 이 가지는 특징 중 하나로 일반화 프로그래밍(Generic programming) 을 들 수 있습니다. 일반화 프로그래밍이란 쉽게 말하자면 일반적인, 다양한 상황에서도 같은 코드로 적용할 수 있는 것을 말합 songsite123.tistory.com 위 포스팅에서 제너릭의 개념과 이를 위한 template 의 사용법과 예제를 확인했습니다. 맨 마지막에 제네릭 클래스에 대해 다루긴 했는데요 너무 간단하게 다룬 것 같아 오늘은 예제 위주로 확인해보며 template 를 이용한 제네릭 클래스에 대해 더 자세히 알아보는 포스팅입니다. 제네릭 클래스를 만들기 위해서는, 클래스의 선언부와 구현부를 모두 template 로 선언해야 합..

C++/C++ 기초 2023.07.17

[C++] 순수 가상 함수와 추상 클래스 ( Pure virtual function and Abstract class )

[C++] 가상 함수와 오버라이딩 ( Virtual function and overriding ) 오버라이딩이란, 부모 클래스로부터 상속받은 메소드의 내용을 재정의(변경) 해야 하는 것을 오버라이딩이라고 합니다. 다른 말로 파생 클래스에서 기본 클래스에 작성된 가상 함수를 재작성하 songsite123.tistory.com 위 포스팅에서 가상함수와 오버라이딩의 개념에 대해 알아보았습니다. 이번 포스팅에서는 순수 가상 함수를 사용한 추상 클래스에 대해 알아보도록 하겠습니다. 순수 가상 함수 (Pure virtual function) 먼저 순수 가상 함수(Pure virtual function) 이란 함수의 코드가 없고 선언만 있는 가상 함수 를 말합니다. 순수 가상 함수는 멤버 함수의 원형 뒤에 = 0; ..

C++/C++ 기초 2023.07.17

[C++] 파생 클래스와 기본 클래스의 생성자/소멸자 호출 관계 + 가상 소멸자

[C++] 생성자와 소멸자 ( Constructor and Destructor ) 포스팅의 목차 / 링크 1. 생성자 (Constructor) 2. 디폴트 생성자 (Default Constructr) 3. 복사 생성자 (Copy Constructor) 4. 소멸자 (Destructor) 5. 생성자/소멸자 실행 순서 클래스를 통해 객체를 생성하면, 해당 객 songsite123.tistory.com 클래스는 생성자와 소멸자가 최소 1개씩 있으며, 객체의 생성과 호출에 생성자와 소멸자가 각각 실행되는 걸 위 포스팅에서 배웠습니다. 오늘 포스팅은 상속에 초점을 맞추어 파생 클래스의 객체가 생성되거나 소멸 될 때, 기본 클래스의 생성자와 소멸자가 호출되는지, 파생 클래스의 생성자와 소멸자가 호출되는지, 그 사..

C++/C++ 기초 2023.07.17

[C++] 가상 함수와 오버라이딩 ( Virtual function and overriding )

오버라이딩이란, 부모 클래스로부터 상속받은 메소드의 내용을 재정의(변경) 해야 하는 것을 오버라이딩이라고 합니다. 다른 말로 파생 클래스에서 기본 클래스에 작성된 가상 함수를 재작성하여 기본 클래스에 작성된 가상 함수를 무력화 시키고, 파생 클래스에서 재작성한 함수를 사용하는 것입니다. 무슨 소리이고 이런 걸 왜 하나 싶으실텐데, 하나의 예시를 들어보겠습니다. 우리가 자동차를 하나 샀습니다. 자동차를 샀으면 우리는 운전을 하겠죠? 운전을 하기 위해 '엑셀' 과 '브레이크' 라는 것을 통해 운전을 하게 될 겁니다. 이를 간단히 클래스로 표현해보면 class Car{ int speed; public: virtual void Accelerator() {} virtual void Break() {} ... } ..

C++/C++ 기초 2023.07.17

[C++] 상속 (Inheritance) - 업캐스팅/다운캐스팅 (Up/Down casting)

상속 (Inheritance) 는 객체 지향 언어의 가장 중요한 특성 중 하나입니다. 상속을 통해 소프트웨어의 재사용이 가능해지고, 동적 바인딩을 통해 객체 지향 프로그래밍을 할 수 있고 계층적으로 프로그램을 관리할 수 있습니다. C++ 에서의 상속은 두 클래스 사이의 부모-자식(기본-파생) 상속 관계를 의미합니다. 상속 (객체 지향 프로그래밍) - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 객체 지향 프로그래밍(OOP)에서, 상속(inheritance)은 객체들 간의 관계를 구축하는 방법이다. 클래스로 객체가 정의되는 고전 상속에서, 클래스는 기반 클래스, 수 ko.wikipedia.org 상속의 정의는 위 링크를 참조해주세요. 예제 코드 위주로 상속을 알아보겠습니다. #incl..

C++/C++ 기초 2023.07.17

[C++] 연산자 중복 (Operator overloading) + 프렌드(friend) 개념

연산자 중복을 배우기에 앞서 먼저 알아야 하는 개념이 있습니다. 바로 friend 라는 키워드로, 다른 언어에는 좀처럼 찾아보기 힘든 개념입니다. C++에서는 클래스 멤버로 선언하지 않아도, 멤버에 접근할 수 있도록 friend 키워드를 제공합니다. 외부에 작성된 함수를 클래스 내에 friend 키워드로 선언하여, 클래스의 멤버 함수와 동일한 접근 자격을 부여할 수 있습니다. 클래스 내에 friend 키워드로 선언된 외부 함수를 프렌드 함수(friend function) 이라고 부르며, 클래스 내에 선언할 수 있는 프렌드 함수의 개수 제한은 없습니다. 어차피 밑의 연산자 중복에서 프렌드 함수를 사용하는 예시가 많이 나오니 프렌드 함수에 대한 예시 코드는 생략하도록 하겠습니다. [목차] 1. 연산자 중복 ..

C++/C++ 기초 2023.07.13

[C++] 함수 중복과 디폴트 매개변수 (Function overloading and default parameter)

이번 포스팅은 함수 오버로딩과 디폴트 매개변수에 대해 알아보는 포스팅입니다. 오버로딩은 OOP 의 3가지 특성 중 polymorphism, 다형성(프로그램 언어 각 요소들(상수, 변수, 식, 객체, 메소드 등)이 다양한 자료형(type)에 속하는 것이 허가되는 성질) 의 구현입니다. 함수 오버로딩 (function overloading) C++에서는 C와 달리 이름이 같은 함수를 여러 개 만들 수 있습니다. 같은 이름의 함수를 중복하여 정의하는 것을 함수 중복, 함수 오버로딩이라고 합니다. 예를 들어 우리가 2개의 숫자를 더해주는 함수와 3개의 숫자를 더하는 함수를 정의한다고 생각해봅시다. int sum2(int a, int b){ return a + b; } int sum3(int a, int b, i..

C++/C++ 기초 2023.07.11

[C++] static 멤버 / const 멤버

오늘은 클래스 내에서 static 으로 지정한 static 멤버와 const 멤버에 대해 알아보겠습니다. 먼저 static 부터 알아볼건데 그전에 static을 왜 쓰느냐를 알면 더 좋겠죠? static 은 객체 지향 언어의 특징 중 하나인 Encapsulation, 캡슐화에 중요한 역할을 합니다. static 을 통해 거의 모든 함수나 변수를 class 안에 선언하도록 할 수 있습니다. 쉽게 생각하면 static 변수나 함수는 전역 변수, 전역 함수와 비슷한 역할을 하는데 그 범위를 class 로 제한하는 키워드입니다. static 은 변수와 함수의 생명 주기와 사용 범위를 지정하는 방식 중 하나로, static 으로 선언된 변수와 함수의 생명 주기와 사용 범위는 아래와 같습니다. 생명 주기(life ..

C++/C++ 기초 2023.07.10

[C++] 복사 생성자 (Copy constructor) - 얕은 복사 vs 깊은 복사

복사(Copy) 란 원본과 동일한 별개의 사본을 만드는 것으로 정의되는데, 크게 2가지로 나뉩니다. 복사의 2가지 차이를 먼저 알아야 복사 생성자를 이해할 수 있기 때문에 이 분류에 대해 먼저 다뤄보겠습니다. 얕은 복사 vs 깊은 복사 (Shallow copy vs Deep copy) 얕은 복사와 깊은 복사의 차이점은 객체의 멤버 변수에 동적 메모리가 할당된 경우 나타나게 됩니다. 얕은 복사(Shallow copy) 객체 복사 시, 객체의 멤버를 1:1로 복사 객체의 멤버 변수에 동적 메모리가 할당된 경우 → 사본과 원본이 동일한 동적 메모리 공유 깊은 복사(Deep copy) 객체 복사 시, 객체의 멤버를 1:1로 복사 객체의 멤버 변수에 동적 메모리가 할당된 경우 → 사본은 원본이 가진 메모리 크기만..

C++/C++ 기초 2023.07.09
728x90