简介
函数调用是一种 postfix-expression 由表达式构成的,该表达式的计算结果为函数或可调用的对象,后跟函数调用运算符 () 。 对象可以声明一个 operator () 函数,该函数为对象提供函数调用语义。
语法
postfix-expression:
postfix-expression ( argument-expression-list opt )
备注
函数调用运算符的参数来自以 argument-expression-list 逗号分隔的表达式列表。 这些表达式的值作为参数传递给函数。 参数表达式列表 可以为空。 在 c + + 17 之前,函数表达式的计算顺序是未指定的,并且可以按任意顺序出现。 在 c + + 17 和更高版本中,函数表达式在任何参数表达式或默认参数之前计算。 参数表达式按不确定的顺序进行计算。
postfix-expression 计算结果为要调用的函数。 它可以采用以下任意一种形式:
函数标识符在当前范围内或在所提供的任何函数参数的作用域中可见,
一个表达式,该表达式的计算结果为函数、函数指针、可调用对象或对一个的引用。
成员函数访问器,无论是显式的还是隐式的
指向成员函数的取消引用的指针。
postfix-expression 可能是重载的函数标识符或重载成员函数访问器。 重载决策的规则确定要调用的实际函数。 如果成员函数是虚拟的,则在运行时确定要调用的函数。
一些示例声明:
函数返回类型 T。 示例声明如下
T func( int i );
指向函数返回类型 T 的指针。 示例声明如下
T (*func)( int i );
对函数返回类型 T 的引用。 示例声明如下
T (&func)(int i);
指向成员的指针函数取消引用返回类型 T。 示例函数调用如下
(pObject->*pmf)();
(Object.*pmf)();
示例
以下示例调用带有三个自变量的标准库函数 strcat_s:
// expre_Function_Call_Operator.cpp
// compile with: /EHsc
#include <iostream>