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定义了(一元)运算符*
,那么是(尽管后者似乎不太可能)。