[C++] 다양한 제네릭 함수 만들기
황기태 저자의 명품 C++ Programming 개정판을 읽고 학습한 내용을 정리한 포스트입니다! https://search.shopping.naver.com/book/catalog/32436115747 C++ Programming : 네이버 도서 네이버 도서 상세정보를 제공합니다. search.shopping.naver.com 하나의 제네릭 타입을 가진 경우 두 개의 매개 변수로 부터 큰 값 구하기 두 수를 매개 변수로 받아 큰 값을 리턴하는 제네릭 함수 bigger()를 만들어 보자. bigger()는 2개의 매개 변수와 리턴 타입이 동일하므로, bigger() 함수의 템플릿 원형은 다음과 같이 선언 template T bigger(T a, T b) // 두 개의 매개 변수 a, b를 비교하여 큰 값..
2023.12.19
no image
[C++] 템플릿
황기태 저자의 명품 C++ Programming 개정판을 읽고 학습한 내용을 정리한 포스트입니다! https://search.shopping.naver.com/book/catalog/32436115747 C++ Programming : 네이버 도서 네이버 도서 상세정보를 제공합니다. search.shopping.naver.com 함수 중복의 약점 함수 중복은 편리하지만 약점도 있다. 아래 swap() 함수를 보자. #include using namespace std; void myswap(int& a, int& b) { int tmp; tmp = a; a = b; b = tmp; } void myswap(double& a, double& b) { double tmp; tmp = a; a = b; b = ..
2023.12.19
no image
[C++] 추상 클래스
황기태 저자의 명품 C++ Programming 개정판을 읽고 학습한 내용을 정리한 포스트입니다! https://search.shopping.naver.com/book/catalog/32436115747 C++ Programming : 네이버 도서 네이버 도서 상세정보를 제공합니다. search.shopping.naver.com 순수 가상 함수 기본 클래스에 작성된 가상 함수는 실행할 목적보다는, 파생 클래스에서 재정의하여 구현할 함수를 알려주는 인터페이스 역할 파생 클레스에서 가상 함수를 재정의 하면, Shape 클래스의 draw() 함수처럼, 동적 바인딩에 의해 기본 클래스의 가상 함수는 거의 실행되지 않는다. 순수 가상 함수(pure virtual function)는 함수의 코드가 없고, 선언만 있..
2023.12.19
no image
[C++] 가상 함수와 오버라이딩의 활용 사례
황기태 저자의 명품 C++ Programming 개정판을 읽고 학습한 내용을 정리한 포스트입니다! https://search.shopping.naver.com/book/catalog/32436115747 C++ Programming : 네이버 도서 네이버 도서 상세정보를 제공합니다. search.shopping.naver.com 가상 함수는 파생 클래스에서 오버라이딩할 함수를 알려주는 인터페이스의 역할을 한다. 응용 사례를 다루며 아래 4가지 주제에 대해 알아보자. 가상 함수를 가진 기본 클래스의 목적 가상 함수 오버라이딩 동적 바인딩 실행 기본 클래스의 포인터 활용 가상 함수를 가진 기본 클래스의 목적 Shape은 Circle, Rect, Line 등 도형의 공통 속성을 구현하는 기본 클래스의 역할을 ..
2023.12.18
[C++] 오버라이딩
황기태 저자의 명품 C++ Programming 개정판을 읽고 학습한 내용을 정리한 포스트입니다! https://search.shopping.naver.com/book/catalog/32436115747 C++ Programming : 네이버 도서 네이버 도서 상세정보를 제공합니다. search.shopping.naver.com C++ 오버라이딩 특징 성공 조건과 실패 가상 함수의 이름과 매개 변수 타입, 개수뿐 아니라 리턴 타입도 일치해야 오버라이딩이 성공 아래는 리턴 타입이 달라 가상 함수 fail()의 오버라이딩이 실패한 사례 #include using namespace std; class Base { public: virtual void success() { cout
2023.12.18
no image
[C++] 가상 함수와 오버라이딩
황기태 저자의 명품 C++ Programming 개정판을 읽고 학습한 내용을 정리한 포스트입니다! https://search.shopping.naver.com/book/catalog/32436115747 C++ Programming : 네이버 도서 네이버 도서 상세정보를 제공합니다. search.shopping.naver.com 상속 관계에서의 함수 재정의 c++에서는 파생 클래스에 기본 클래스의 멤버 함수와 동일한 이름과 원형으로 함수를 재정의(redefine)하여 사용할 수 있다. 아래와 같이 함수 재정의를 해준 뒤 호출해보자. #include using namespace std; class Base { public: void f() { cout Base::f(); // Base의 멤버 f() 호출 ..
2023.12.18
no image
[C++] 다중 상속과 가상 상속
황기태 저자의 명품 C++ Programming 개정판을 읽고 학습한 내용을 정리한 포스트입니다! https://search.shopping.naver.com/book/catalog/32436115747 C++ Programming : 네이버 도서 네이버 도서 상세정보를 제공합니다. search.shopping.naver.com 요즘 시대는 융합 혹은 컨버전스(convergence)의 시대이다. 무선 전화기와 MP3의 기능을합친 제품들처럼 각 기능을 모듈화하고 여러 모듈을 조립하면 융합된 새로운 형태의 제품이 만들어진다. SW의 경우에도 다르지 않다. 모듈화를 통해 코드를 재사용하는 것이 대세이며, C++에서는 코드를 클래스로 모듈화하고 상속을 통해 기능을 확장한다. 다중 상속 하나의 파생 클래스가 여러..
2023.12.15
no image
[C++] public, protected, private 상속
황기태 저자의 명품 C++ Programming 개정판을 읽고 학습한 내용을 정리한 포스트입니다! https://search.shopping.naver.com/book/catalog/32436115747 C++ Programming : 네이버 도서 네이버 도서 상세정보를 제공합니다. search.shopping.naver.com 클래스 상속 지금까지는 기본 클래스의 멤버들이 파생 클래스의 멤버로 확장될 때, public 상속에 대해서만 다루었다. 'public 상속'을 사용하면 Base에 선언된 멤버들은 접근 지정을 그대로 유지한 채 Derived의 멤버로 확장된다. class Derived : public Base { ... }; 하지만, 'private 상속' 이나 'protected 상속'은 기본 ..
2023.12.14
no image
[C++] 상속과 생성자, 소멸자
황기태 저자의 명품 C++ Programming 개정판을 읽고 학습한 내용을 정리한 포스트입니다! https://search.shopping.naver.com/book/catalog/32436115747 C++ Programming : 네이버 도서 네이버 도서 상세정보를 제공합니다. search.shopping.naver.com 파생 클래스와 기본 클래스의 생성자 호출 및 실행 관계 파생 클래스와 기본 클래스는 각각 생성자를 가지고 있다. 이 때 아래 2가지 질문을 살펴보자 1. 파생 클래스의 객체가 생성될 때 파생 클래스의 생성자와 기본 클래스의 생서자가 모두 실행되는가? 아니면 파생 클래스의 생성자만 실행되는가? 둘 다 실행된다. 생성자는 객체를 초기화할 목적으로 사용되므로, 파생 클래스의 생성자는 ..
2023.12.14