Przeciąż metodę lub użyj wartości domyślnych? c ++

Nadal jestem stosunkowo nowy w C ++ i nie mogę zrozumieć różnicy w następujących dwóch sposobach kodowania funkcji, które mogą przyjmować jeden parametr, a może dwa lub trzy lub więcej. W każdym razie, oto mój punkt widzenia

przeciążenie funkcji:

int aClass::doSomething(int required)
{
    //DO SOMETHING
}

int aClass::doSomething(int required, int optional)
{
    //DO SOMETHING
}

jak to się różni od wartości domyślnej:

int aClass::doSomething(int required, int optional = 0)
{
    //DO SOMETHING
}

Wiem w różnych okolicznościach, że może być bardziej odpowiedni niż inny, ale jakiego rodzaju rzeczy powinienem być świadomy wybierając jedną z tych opcji?

questionAnswers(4)

yourAnswerToTheQuestion