C++ C++;函数调用问题

C++ C++;函数调用问题,c++,function,C++,Function,我对以下示例中的函数调用有一个问题: int main() { int a, b; cin >> a >> b >> endl; cout << *f(a,b); return 0; } intmain() { INTA,b; cin>>a>>b>>endl; cout无论f是什么,*f(a,b)尝试将间接运算符应用于f(a,b)的结果 如果f是一个函数指针,您正试图调用它,而您可以这样做: (*f)(a, b)

我对以下示例中的函数调用有一个问题:

int main()
{
    int a, b;
    cin  >> a >> b >> endl;
    cout << *f(a,b);
    return 0;
}
intmain()
{
INTA,b;
cin>>a>>b>>endl;

cout无论
f
是什么,
*f(a,b)
尝试将间接运算符应用于
f(a,b)
的结果

如果
f
是一个函数指针,您正试图调用它,而您可以这样做:

(*f)(a, b)

只是做
f(a,b)

>更简单。

< P>我不认为有任何方式可以看出,F.C++的定义需要很多上下文来知道正在发生什么。

< P>很难判断它是否有效,而不知道什么是<代码> f < /C> >。但是如果它返回的东西可以是代码> derederder< /COD> >它看起来很好只要
'dereferenced'
可以打印值
(重载运算符代码至少可能是合理的。要使其工作,
f
必须定义为一个函数,它返回两种类型中的任何一种:要么返回指针,在这种情况下,
*
取消对指针的引用,因此它指向的任何内容都将发送到标准输出。否则,
f
将返回一个指针不要返回一些定义了
操作符*
的用户定义类型,以返回与
cout
兼容的内容。也许你想扩展一下
f
是什么。@Vlad:也许你应该把它添加到问题中,这样我们就不必试着去读你的想法了,嗯?在这种情况下,它对
f(a,b)的任何东西都适用间接的
返回。(如果不能返回,则说明程序格式不正确。也就是说,
f
需要返回指针或一元
运算符*
重载的类类型。)好的,那么如果函数返回数字的总和,那么调用无效?@Vlad:答案取决于用于保存总和的类型。如果它是
int
long
double
(等等),那么不是,无效。如果是某个UDT定义了(一元)
运算符*
,那么是(尽管后者似乎不太可能)。