가상 함수

[기술 질문] #15_가상 함수 C++의 가상 함수에 대해 알아보겠습니다. Overview 개념 가상 소멸자 추상 클래스 인터페이스 #0. 개념 1. 가상 함수 [정의] : C++의 가상 함수는 기본 클래스에서 virtual 예약어와 함께 선언되며, 파생 클래스에서 오버라이드(재정의)할 수 있습니다. 컴파일러는 해당 함수를 가상 함수로 처리하고 객체의 타입에 따라 해당 함수의 호출 대상을 동적으로 결정할 수 있습니다. 결과적으로, 가상 함수의 사용은 객체의 타입에 관계없이 일관된 인터페이스를 제공하며, 파생 클래스의 재정의를 통해 유연하게 확장할 수 있도록 해줍니다. [특징] : 가상 함수는 다형성을 구현하는 중요한 메커니즘입니다. 가상화된 멤버 함수는 파생 클래스에서 오버라이딩 할 수 있으며, 같은 이..
[Basic C++] #10_오버라이드 키워드, override C++ 개발에서 베이스 클래스의 가상 함수를 오버라이딩 하는 구체적인 예제들을 살펴보겠습니다. "전문가를 위한 C"의 9 항목, "클래스 상속 활용 테크닉"에 해당하는 내용입니다. 오버라이드 키워드(override) class Super { public: Super(); virtual ~Super(); virtual void someMethod(double d); }; class Sub : public Super { public: Sub(); virtual void someMethod(int i) override;// 에러 발생! }; 먼저, "override" 키워드 사용의 필요성에 대해 복기해봅시다. 서브 클래스는 베이스 클래스에서 선언..
[Effective C++] #37 가상 함수, 기본 매개변수 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 6장 "상속, 그리고 객체 지향 설계", 항목 37 "어떤 함수에 대해서도 상속받은 기본 매개변수 값은 절대로 재정의하지 말자"에 해당하는 내용입니다. 가상 함수, 동적 바인딩 class Shape { public: virtual void Draw(ShapeColor color = Red) const = 0; enum ShapeColor { Red, Blue, Green }; ... }; class Rectangle : public Shape { virtual void Draw(ShapeColor color..
[Effective C++] #36 비 가상 함수의 상속, 바인딩 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 6장 "상속, 그리고 객체 지향 설계", 항목 36 "상속받은 비 가상 함수를 파생 클래스에서 재정의하는 것은 절대 금물!"에 해당하는 내용입니다. 비 가상 멤버 함수 class A { public: void mf();// 비 가상 멤버 함수 virtual void mf2();// 가상 멤버 함수 ... }; class B : public A {...}; 기본 클래스에 대한 public 상속은 "is... a" 상속입니다. 이전 항목에서 다뤘던 내용입니다. public 상속이란, 클래스 "B"를 클래스 ..
[Effective C++] #34 인터페이스 상속, 구현 상속, 차이점 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 6장 "상속, 그리고 객체 지향 설계", 항목 34 "인터페이스 상속과 구현 상속의 차이를 제대로 파악하고 구별하자"에 해당하는 내용입니다. 인터페이스 상속, 구현 상속 class Shape { public: virtual void draw() const = 0;//순수 가상 함수 virtual void error(const std::string& msg);//단순 가상 함수 int objectID() const; //비가상 함수 ... }; class Rect : public Shape{...}..
[Effective C++] #9 가상 함수를 호출하는 생성자, 소멸자 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 2장 "생성자, 소멸자 및 대입 연산자", 항목 9 "객체 생성 및 소멸 과정 중에는 절대로 가상 함수를 호출하지 말자"에 해당하는 내용입니다. 생성자 내부의 가상 함수 class 기본클래스 { public: 기본클래스 (); virtual void 가상함수 () const = 0; ... }; 기본클래스::기본클래스 () { 가상함수 (); } class 파생클래스: public 기본클래스 { public: virtual void 가상함수 () const; ... }; // 파생클래스 객체 생성 ..
[Effective C++] #7 기본 클래스와 가상 소멸자 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 2장 "생성자, 소멸자 및 대입 연산자", 항목 7 "다형성을 가진 기본 클래스에서는 소멸자를 반드시 가상 소멸자로 선언하자"에 해당하는 내용입니다. 가상 소멸자 virtual ~Class_Name( ) {...} "소멸자"란 객체의 소멸 시점에 자원을 정상적으로 해제하기 위해 호출하는 함수입니다. 이 소멸자를 "virtual" 키워드와 함께 사용하는 것을 "가상 소멸자"라고 합니다. "가상 소멸자"는 호출될 때, 다형성을 지원하는 기본 클래스를 상속받는 자식 클래스의 소멸자를 호출 한 뒤에 부모 클래스의 소..
Hardii2
'가상 함수' 태그의 글 목록