본문 바로가기

언어/C++41

[C++ STL] 1-1. 템플릿 - 함수 템플릿(function template) 공부 내용을 정리하는 목적 이므로 참고용으로만 읽어 주시기 바랍니다. 틀린 부분에 대한 지적은 감사합니다. 1. STL(Standard Template Library) 이란? 지금까지 C++의 특징 중 하나인 OOP에 대해 정리했다. 이번에는 일반화 프로그래밍(generic programming)의 한축인 STL(Standard Template Library)에 대해 정리하고자 한다. 일반화 프로그래밍을 지원하는 대표적인 기능이 템플릿(template)이며 객체 지향 프로그래밍과 다르게 프로그램의 알고리즘을 중점적으로 다룬다. 표준 템플릿 라이브러리인 STL은 알고리즘을 일반화한 표현을 제공하며 컴파일 타임 메커니즘을 사용하여 실행 시 성능 저하가 적고 표준이기 때문에 이식이 쉬워 코드의 재활용성을 높여.. 2020. 1. 11.
[C++ 기본 공부정리] 17-2. OOP 다형성 - 추상 클래스(abstract class) 공부 내용을 정리하는 목적 이므로 참고용으로만 읽어 주시기 바랍니다. 틀린 부분에 대한 지적은 감사합니다. 1. 추상 클래스(abstract class)란? 추상이란 단어의 뜻은 '구체성이 없어 그 뜻이 분명하지 않다'이다. 따라서 추상 클래스는 기능이 구체적으로 작성되지 않은 클래스라는 뜻으로 받아들일 수 있다. C++에서 추상 클래스는 하나 이상의 순수 가상 함수(pure virtual function)를 지닌 클래스를 말한다. 이런 추상 클래스를 이용하면 다형성을 가진 다양한 함수들을 정의할 수 있게 도와준다. 제작하고자 하는 객체들이 반드시 지닌 기능을 추상 클래스의 순수 가상 함수로 작성해 놓으면, 해당 클래스를 이용하여 만든 자식 클래스에서는 이 가상 함수를 재정의하여 사용하면 된다. 즉, 추.. 2020. 1. 10.
[C++ 기본 공부정리] 17-1. OOP 다형성 - 가상 함수(virtual function) 공부 내용을 정리하는 목적 이므로 참고용으로만 읽어 주시기 바랍니다. 틀린 부분에 대한 지적은 감사합니다. 1. 가상 함수(virtual function)란? 가상 함수는 순수 가상 함수(pure virtual class)와 일반 가상 함수(virtual class)로 구분되어 사용된다. 둘 다 가상 함수 이기 때문에 기본 개념은 같고 사용 방법의 차이만 있다. 가상 함수의 기본 개념은 다음과 같다. 가상함수를 사용하게 되면 부모 클래스에서 선언한 함수가 자식 클래스에서 재정의 될 수 있다고 알려주게 되어 기본 클래스 타입의 포인터 또는 참조를 통해 자식 클래스의 객체를 참조하여 해당 객체에 대한 함수를 실행할 수 있게 된다. 일반 가상 함수와 순수 가상 함수를 비교해보면, ▶ 일반 가상 함수(virtu.. 2020. 1. 9.
[C++ 기본 공부정리] 16-3. OOP 상속성 - 다중 상속(multiple inheritance) 공부 내용을 정리하는 목적 이므로 참고용으로만 읽어 주시기 바랍니다. 틀린 부분에 대한 지적은 감사합니다. 1. 다중 상속(multiple inheritance)란? 다중 상속이란 말 그대로 두 개 이상의 여러 클래스를 하나의 자식 클래스가 상속받는 것을 의미한다. 상속받은 모든 클래스의 멤버를 일반 상속처럼 사용할 수 있다. 쉼표(,)를 사용하여 여러 개의 클래스를 동시에 상속받으며 잘 사용되지 않는다. JAVA의 경우 다중 상속을 아예 지원하지 않는다. 문법) class 자식 클래스명:접근제어자 부모 클래스1, 접근제어자 부모 클래스2,..{ 클래스 멤버 }; 다음은 다중 상속의 예시이다. int형 멤버를 가지는 클래스 A와 double형 멤버를 가지는 클래스 B를 생성하였다. AB라는 클래스를 생성.. 2020. 1. 8.
[C++ 기본 공부정리] 16-2. OOP 상속성 - 멤버 함수 오버라이딩(overriding) 공부 내용을 정리하는 목적 이므로 참고용으로만 읽어 주시기 바랍니다. 틀린 부분에 대한 지적은 감사합니다. 1. 오버로딩(overloading)과 오버라이딩(overriding) 오버로딩(overloading)과 오버라이딩(overriding)이름이 비슷하여 많이 헷갈리니까 주의하자. 앞서 정리한 것처럼 오버 로딩은 동일한 함수명을 가진 함수를 매개변수를 다르개하여 여러개로 정의하여 다양한 상황에 사용할 수 있도록 하는 것이였다. 이제 정리할 오버 라이딩은 주로 상속에서 쓰이며 OOP의 다형성의 특징을 지닌 것으로 동일한 함수명에 대해 원래 기능을 무시하고 아예 새롭게 재정의하는 것을 말한다. 오버로딩은 동일한 기능을 다양한 매개변수의 환경에서 동작하기 위해 사용하고 오버라이딩은 다른 기능을 동작하도록 .. 2020. 1. 7.
[C++ 기본 공부정리] 16-1. OOP 상속성 - 파생 클래스(derived class) 공부 내용을 정리하는 목적 이므로 참고용으로만 읽어 주시기 바랍니다. 틀린 부분에 대한 지적은 감사합니다. 파생 클래스(derived class)는 클래스를 상속을 이용해 새롭게 작성되는 클래스를 뜻한다. 따라서 먼저 상속(inheritance)에 대해 정리하자. 1. 상속(inheritance) 일상적으로 쓰이는 상속이란 뜻은 재산, 지위 등을 물려받는 것을 뜻한다. 클래스에서의 상속도 이와 비슷한 의미로 쓰인다. 상속이란 기존에 존재하는 클래스를 이용하여 해당 클래스의 속성이나 기능 즉 멤버 변수와 함수를 물려받아 그대로 사용하거나 기능을 개선 또는 확장하여 사용하는 것을 뜻한다. 만약 새로운 클래스B를 만드는대 클래스A와 기본적인 부분은 유사하나 다른 기능 몇 개가 추가되고 기존 기능보다 좀 더 확.. 2020. 1. 5.