Освоение функций в C++: от основ к продвинутому использованию
Функции в C++: полное руководство
Это руководство проведет вас через основы функций C++ — включая пользовательские функции, прототипы, параметры, типы возврата и встроенные библиотечные функции — с наглядными реальными примерами.
Функция — это автономный блок кода, выполняющий конкретную задачу. Разбивая сложные проблемы на более мелкие, повторно используемые функции, вы повышаете читаемость, поддерживаемость и тестируемость.
В C++ вы столкнетесь с двумя категориями функций:
- Функции стандартной библиотеки — предопределенные языком (например,
sqrt(),abs()). - Пользовательские функции — написанные вами для инкапсуляции собственной логики.
Мы сосредоточимся на пользовательских функциях, охватывая их синтаксис, вызов и лучшие практики.
Пользовательские функции в C++
C++ позволяет определять функции с четкой сигнатурой: тип возврата, имя и необязательные параметры.
Синтаксис объявления функции
returnType functionName(parameter1, parameter2, ...) {
// тело функции
}
Пример: void greet() печатает приветствие. Пустые скобки означают отсутствие параметров.
// объявление функции
void greet() {
cout << "Hello World";
}
Ключевые моменты:
- Имя функции:
greet() - Тип возврата:
void(нет возвращаемого значения) - Параметры: нет (пустые скобки)
- Тело: код внутри
{}
Примечание: Типы возврата и параметры будут рассмотрены позже.
Вызов функции
Для использования greet() просто вызовите её там, где нужно.
int main() {
greet();
}

Пример 1: вывод текста
#include <iostream>
using namespace std;
void greet() {
cout << "Hello there!";
}
int main() {
greet();
return 0;
}
Результат
Hello there!
Параметры функции
Параметры — это заполнители для значений, передаваемых функции.
void printNum(int num) {
cout << num;
}
При вызове printNum передайте аргумент:
int main() {
int n = 7;
printNum(n);
return 0;
}
Пример 2: функция с несколькими параметрами
#include <iostream>
using namespace std;
void displayNum(int n1, float n2) {
cout << "The int number is " << n1;
cout << "The double number is " << n2;
}
int main() {
int num1 = 5;
double num2 = 5.5;
displayNum(num1, num2);
return 0;
}
Результат
The int number is 5 The double number is 5.5
Убедитесь, что типы аргументов совпадают с объявленными параметрами.

Операторы возврата
Функции могут возвращать значения. Укажите тип возврата и используйте return для предоставления результата.
int add(int a, int b) {
return a + b;
}
Вызов add и сохранение результата:
int sum = add(100, 78);
cout << "100 + 78 = " << sum << endl;
Пример 3: сложение двух чисел
#include <iostream>
using namespace std;
int add(int a, int b) {
return a + b;
}
int main() {
int sum = add(100, 78);
cout << "100 + 78 = " << sum << endl;
return 0;
}
Результат
100 + 78 = 178
Прототипы функций
Когда функция определена после первого использования, прототип информирует компилятор о её сигнатуре.
// Прототип
void add(int, int);
int main() {
add(5, 3);
return 0;
}
// Определение
void add(int a, int b) {
cout << (a + b);
}
Синтаксис прототипа:
returnType functionName(paramType1, paramType2, ...);
Пример 4: использование прототипа
#include <iostream>
using namespace std;
int add(int, int);
int main() {
int sum = add(100, 78);
cout << "100 + 78 = " << sum << endl;
return 0;
}
int add(int a, int b) {
return a + b;
}
Результат
100 + 78 = 178
Преимущества пользовательских функций
- Инкапсуляция: группировка связанного кода в один повторно используемый блок.
- Читаемость: разделение сложной логики на описательные функции.
- Поддерживаемость: обновление логики в одном месте без изменения каждого вызова.
- Тестируемость: изоляция функциональности для модульного тестирования.
Функции стандартной библиотеки
Стандартная библиотека C++ предлагает множество готовых функций, упрощающих распространенные задачи. Примеры: sqrt(), abs(), isdigit().
Для использования библиотечной функции подключите заголовок, где она объявлена. Для математических операций #include <cmath> предоставляет sqrt(), pow() и др.
Пример 5: вычисление квадратного корня
#include <iostream>
#include <cmath>
using namespace std;
int main() {
double number = 25.0;
double squareRoot = sqrt(number);
cout << "Square root of " << number << " = " << squareRoot;
return 0;
}
Результат
Square root of 25 = 5
Объявление функции sqrt() находится в заголовке cmath, поэтому директива #include <cmath> обязательна.
Для глубокого погружения в функции стандартной библиотеки C++ см. справочник по стандартной библиотеке C++.
Язык C
- Освоение операторов C++: полное руководство с практическими примерами
- Комментарии в C++: лучшие практики для читаемого и поддерживаемого кода
- Как передавать массивы в функции в C++: практическое руководство
- Дружественные функции и классы в C++: мастерство контроля доступа
- 10 ключевых функций Insight для оптимизации FDM-печати на Stratasys
- Перегрузка операторов в C++: практическое руководство с примерами кода
- Освоение лямбда-функций Python: практические примеры и лучшие практики
- Мастерство функций в Verilog для эффективного RTL дизайна
- Функции в C: объявление, определение, вызов, аргументы (по значению и по ссылке), рекурсия
- Перегрузка в C++: функции и операторы — подробное руководство