В каких случаях вызов функции не приводит к её выполнению?
В каких случаях вызов функции (т.е. func()) не приводит к её выполнению?
Ответы (1 шт):
Автор решения: EOF
→ Ссылка
Мне известно два случая:
- Когда вызов функции является аргументом
decltype:
#include <iostream>
int func(int x)
{
std::cout << "x is " << x << std::endl;
return 123;
}
int main()
{
decltype(func(555)) var;
// Ничего не выведет в терминал
return 0;
}
- Когда вызов функции является аргументом
sizeof:
#include <iostream>
int func(int x)
{
std::cout << "x is " << x << std::endl;
return 123;
}
int main()
{
std::cout << sizeof(func(555)) << std::endl;
// Выведет на экран 4
return 0;
}
В данных случаях обьяснение простое: в этих двух примерах от функции нужно было узнать только тип возвращаемого значения, а чтобы это сделать не нужно вызывать функцию. Достаточно просто посмотреть на её обьявление.