Входные аргументы функции

Рейтинг: 1Ответов: 2Опубликовано: 26.03.2015

Здравствуйте.

Заметил одну вещь в C++, когда на одну и ту же функцию можно подавать разные аргументы, вот пример описания метода построения линии, можно задать ее объектом типа QLine, а можно четырьмя координатами:

QGraphicsLineItem * addLine ( const QLineF & line, const QPen & pen = QPen() )

QGraphicsLineItem * addLine ( qreal x1, qreal y1, qreal x2, qreal y2, const QPen & pen = QPen() )

Вопрос, как мне сделать свою функцию, которая бы могла принимать в качестве входного аргумента как переменную типа int, так и вовсе ничего?

То есть функция в .h

int myfunc(int)

И в .cpp

int Myclass::myfunc(int a)
{
    for(int i=0; i<a; i++)
    {...}
}

Задумка такова, что входной аргумент говорит, сколько раз функция должна выполнить свое действие в теле цикла, если же ничего не подаем на вход, то цикл отрабатывает 1 раз.

Ответы

▲ 5Принят

Это называется перегрузка функций. Для создания нескольких реализаций в заголовочном файле объявляете свои функции, например:

int myfunc(int a); 
int myfunc();

Затем в файле .cpp реализуете функции:

int myfunc(int a)
{
// ...реализация
} 
int myfunc()
{
// ...реализация
}

С уважением, maxspb.

▲ 2

Можно еще вот так

int Myclass::myfunc(int a = 1)
    {
        for(int i=0; i<a; i++)
        {...}
    }