Рубрики

Некоторые интересные факты об аргументах по умолчанию в C ++

Предсказать вывод следующих программ на C ++.

1)

#include <iostream>

void init(int a=1, int b=2, int c=3);

  

int main()

{

    init();

    return 0;

}

void init(int a=1, int b=2, int c=3)

{

    std::cout << a << ' ' << b << ' ' << c;

}

Вышеприведенная программа выглядит корректно на первый взгляд, но не удастся при компиляции. Если функция использует аргументы по умолчанию, то аргументы по умолчанию не могут быть записаны как в объявлении, так и в определении функции. Это должно быть только в декларации, а не в определении.

Следующая программа теперь верна.

#include <iostream>

void init(int a=1, int b=2, int c=3);

int main()

{

    init(); // Это хорошо

    return 0;

}

void init(int a,int b,int c)

{

    std::cout << a << ' ' << b << ' ' << c;

}

2)

#include <iostream>

  
// чего-то не хватает

void init(int =1, int =2, int =3);

  

int main()

{

    init();

    return 0;

}

  

void init(int a, int b, int c)

{

    std::cout << a << ' ' << b << ' ' << c;

}

Если вы внимательно наблюдаете прототип функции, то это выглядит как ошибка, но на самом деле это не так. Имена переменных могут быть опущены в аргументах по умолчанию.

Эта статья предоставлена Pravasi Meet . Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Некоторые интересные факты об аргументах по умолчанию в C ++

0.00 (0%) 0 votes