[C++] 오버로딩과 오버라이딩 차이
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
'[프로그래밍 공부] > C&C++' 카테고리의 다른 글
[C] while문 안에서 scanf 받기 (0) | 2022.01.13 |
---|---|
[C++] 가상 함수 (Virtual Function) (0) | 2022.01.08 |
[C++] 스마트 포인터 (0) | 2022.01.08 |
[C++] 클래스 상속(inheritance) (0) | 2022.01.01 |
[C++] 클래스 생성자와 소멸자 (0) | 2022.01.01 |