При обращении к функции, можно опускать некоторые её аргументы, но для этого необходимо при объявлении прототипа данной функции проинициализировать её параметры какими-то значениями, эти значения и будут использоваться в функции по умолчанию. Аргументы по умолчанию должны быть заданы в прототипе функции. Если в функции несколько параметров, то параметры, которые опускаются должны находиться правее остальных. Таким образом, если опускается самый первый параметр функции, то все остальные параметры тоже должны быть опущены. Если опускается какой-то другой параметр, то все параметры, расположенные перед ним могут не опускаться, но после него они должны быть опущены. Разработаем программу, в которой объявим функцию с аргументами по умолчанию.
// function.cpp: определяет точку входа для консольного приложения. #include "stdafx.h" #include <iostream> #include <cmath> // описывает работу математической функции sqrt() - квадратный корень using namespace std; double heron_space(const double a = 5, const double b = 6.5, const double c = 10.7); //параметры функции инициализированы по умолчанию int main(int argc, char* argv[]) { cout << "S = " << heron_space() << endl << endl; // все параметры используются по умолчанию cout << "S = " << heron_space(10,5) << endl << endl; // только последний параметр используется по умолчанию cout << "S = " << heron_space(7) << endl << endl; // два последних параметра берутся по умолчанию, а первый равен 7 system("pause"); return 0; } double heron_space(const double a, const double b, const double c) // функция вычисления площади треугольника по формуле Герона { const double p = (a + b + c) / 2; // полупериметр cout << "a = " << a << "\nb = " << b << "\nc = " << c << endl; return (sqrt(p * (p - a) * (p - b) * (p - c))); // формула Герона для нахождения площади треугольника }
// код Code::Blocks
// код Dev-C++
// function.cpp: определяет точку входа для консольного приложения. #include <iostream> #include <cmath> // описывает работу математической функции sqrt() - квадратный корень using namespace std; double heron_space(const double a = 5, const double b = 6.5, const double c = 10.7); //параметры функции инициализированы по умолчанию int main(int argc, char* argv[]) { cout << "S = " << heron_space() << endl << endl; // все параметры используются по умолчанию cout << "S = " << heron_space(10,5) << endl << endl; // только последний параметр используется по умолчанию cout << "S = " << heron_space(7) << endl << endl; // два последних параметра берутся по умолчанию, а первый равен 7 return 0; } double heron_space(const double a, const double b, const double c) // функция вычисления площади треугольника по формуле Герона { const double p = (a + b + c) / 2; // полупериметр cout << "a = " << a << "\nb = " << b << "\nc = " << c << endl; return (sqrt(p * (p - a) * (p - b) * (p - c))); // формула Герона для нахождения площади треугольника }
Параметры функции инициализированы по умолчанию в прототипе функции. Если при запуске функции не передавать ей значения, то по умолчанию будут использоваться аргументы 5, 6.5, 10.7. В строках 12, 13, 14 показаны различные способы использования функции heron_space()
с аргументами по умолчанию. Данная функция heron_space
вычисляет площадь треугольников по формуле Герона.Формула Герона позволяет вычислить площадь треугольника (S) по его сторонам a, b, c:
где р — полупериметр треугольника:
В строке 5 подключен стандартный заголовочный файл <cmath>
для того, чтобы воспользоваться функцией вычисления корня квадратного sqrt()
в строке 23. Результат работы программы показан на рисунке 5.
a = 5 b = 6.5 c = 10.7 S = 11.1618 a = 10 b = 5 c = 10.7 S = 24.8615 a = 7 b = 6.5 c = 10.7 S = 21.9956
Рисунок 5 — Функции в С++
Иногда при многократном использовании одной функции необходимо менять не все её параметры, в таком случае использование параметров по умолчанию очень удобно.
Комментарии
LeeManG
Богдан
<iostream> если здесь пооткрывать то найдём подключения <cmath> , потому всё роботает, но админ стати хотел показать что нужно подключить чтоб работали математические функции
Богдан
извиняюсь за некоторые грамматические ошибки