반응형

 


[들어가기 전]

 

함수 오버라이딩(Overriding)은 자식 클래스가 필요에 따라 상속된 멤버 함수를 재정의하여 사용하는 것을 의미한다. 이 기법을 사용하면 자식 클래스에서는 상속받은 멤버 함수들을 자기 자신의 필요에 맞추어 변경 할 수 있다.


[설명]

 

함수 오버라이딩은 자식 클래스 멤버 함수의 구현부만을 변경하는 것이므로, 자식 클래스 멤버 함수의 선언부 부분은 부모 클래스의 선언부와 동일하여야 한다. 즉 멤버 함수의 이름, 반환형, 매개변수의 개수와 자료형이 일치하여야 한다. 만약 자식 클래스에서 오버라이딩한 함수를 실수로 부모 클래스와 약간 다르게 정의한 경우, 컴파일러는 새로운 멤버 함수로 인지하기 때문에 아무런 오류가 발생하지 않는다.

 

<함수 오버로딩(중복정의)와 오버라이딩(재정의)의 차이>

 - 오버로딩은 같은 이름의 멤버 함수를 여러개 정의하는 것. New의 개념.

 - 오버라이딩은 부모 클래스에서 상속받은 멤버 함수를 다시 정의해서 내용을 변경하는 것. Change, Modify의 개념.

 

<함수 오버라이딩 후 부모 클래스의 대상 함수 호출 방법>

 - 부모 클래스에서 대상 함수를 오버라이딩 후, 호출하기 위해서는 범위 연산자인 "::"을 사용하여 호출하면 됨.

   : class Parent() { void Print();} / class Child() {void Print();}

     → Print(); // 자식클래스 오버라이딩 함수 호출

     → ::Print(); // 부모클래스 대상 함수 호출

 - 자식 클래스에서는 부모 클래스의 멤버 함수를 완전히 재정의 하기보다는, 내용만 추가하는 경우가 많다.   : void Print() {          Parent::Print();          기타 작업. }


[함수 오버로딩(중복정의)와 오버라이딩(재정의)의 차이]

 1) 오버로딩은 같은 이름의 멤버 함수를 여러개 정의하는 것

       - New의 개념.

 2) 오버라이딩은 부모 클래스에서 상속받은 멤버 함수를 다시 정의해서 내용을 변경하는 것

       - Change, Modify의 개념.

 

[함수 오버라이딩 후 부모 클래스의 대상 함수 호출 방법]

 1) 부모 클래스에서 함수를 오버라이딩 후, "::" 연산자(범위연산자) 사용하여 호출

       - class Parent {

                void Print() {} }

       - class Child : public Parent {

                void Print() {             // 자식클래스의 오버라이딩 수행

                       Parent::Print();  // 부모클래스 대상 함수 호출

                       기타 작업.. } }

 2) 상기 예제와 같이, 자식클래스에서는 부모클래스의 멤버 함수를 완전히 재정의 하기보다는,

     함수 오버라이딩에서 부모클래스의 대상 함수를 호출하여 내용만 추가하는 경우가 많다.


[함수 오버라이딩(Overriding)]

 - 추후 작업.

#pragma once
#include <string>
using namespace std;

class Car
{
private:
	int m_nSpeed;

public:
	void SetSpeed(int nSpeed);
	int GetSpeed();
};

class SportsCar : public Car
{
private:
	bool m_bTurbo;
   
public:
	void SetTrubo(bool bTurbo);
	bool GetTurbo();
}

int main()
{
	SprotsCar car;
    
	car.SetSpeed(100);	// 부모의 메서드
	car.SetTrubo(true);	// 자식의 메서드
    
	car.GetSpeed();		// 부모의 메서드
	car.GetTrubo();		// 자식의 메서드
    
	return 0;
}

 

반응형
Posted by tislqhf

블로그 이미지
개인적인 공부자료 정리하는 공간
tislqhf

태그목록

공지사항

Yesterday
Today
Total

달력

 « |  » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함