본문 바로가기

[C++] 오버로딩과 오버라이딩 차이

Kwonriver 2022. 1. 1.
728x90

오버로딩(Overloading)

오버로딩은 같은 함수명을 다른 매개변수를 사용하여 만들 수 있게 만든 방법

함수명은 같지만 매개변수의 타입과 개수가 다른 것이 특징이다.

반환형은 같아도 되고 달라도 된다. ( 오버로딩에 영향을 주지 않는다 )

함수명, 매개변수가 같고 반환형만 다르면 같은 함수로 인식힌다.

함수 이름은 같은데 매개변수에 따라 다른 기능을 사용하고 싶을 때 사용한다.

void Print()
{
	std::cout << "print" << std::cout;
}

void Print(int num)
{
	std::cout << num << std::cout;
}

 

 

오버라이딩(Overriding)

부모,자식 클래스 간에 함수를 재정의하는 것, 클래스의 다형성을 위한 기능

자식은 부모 클래스에 있는 함수를 재정의 할 수 있다.

재정의이기 때문에 반환값, 함수명, 매개변수들이 모두 같고 내부 기능만 다르다 ( 정의부만 다름 )

오버라이딩 된 함수는 자식 클래스에서 정의한 함수를 실행한다.( 부모의 함수를 사용하지 않는다 )

class Car
{
	//오버라이딩 외 생략
protected:
	void ShowPrice();
}

void Car::ShowPrice()
{
	std::cout << "1000원" << std::endl;
}

class SprotCar : public Car
{
	//오버라이딩 외 생략
protected:
	void ShowPrice();
}

void SprotCar::ShowPrice()
{
	std::cout << "100000원" << std::endl;
}

 

클래스 내부에서도 오버로딩이 가능하다

부모클래스와 자식클래스 간에 함수명만 같고 매개변수가 다른 함수가 있다면 그것은 오버라이딩이 아니라 오버로딩이다

 

728x90