1

我想实现以下内容:

我定义了一个函数。当我在函数后面写N ()时,该函数将被调用N次。

我举个例子:</p>

#include <iostream>
using namespace std;

typedef void* (*c)();
typedef c (*b)();
typedef b (*a)();

a aaa()
{
    cout<<"Google"<<endl;

    return (a)aaa;
}

int main()
{
    aaa()()()();
    system("pause");
}

然后输出是:

在此处输入图像描述

还有其他方法可以实现吗?

4

2 回答 2

6

使用函子很简单。

#include <iostream>

struct Function
{
   Function& operator()() {
      std::cout << "Google" << std::endl;
      return *this;
   }
};

int main()
{
   Function f;
   f()()()();
}
于 2012-09-02T08:52:56.897 回答
1

你可能对函子感兴趣:

#include <iostream>

class my_functor {
    public:
    //  if called without parameters
        my_functor& operator()(){
            std::cout << "print" << std::endl;
            return *this;
        }
    //  if called with int parameter
        my_functor& operator()(int number){
            std::cout << number << std::endl;
            return *this;
        }
};

int main(){
    my_functor functor;
    functor()(5)();
    return 0;
}

通过重载函数调用运算符(),您可以将函数行为添加到您的对象。您还可以定义不同的参数,这些参数应传递给您的重载()-operator,并调用相应的函数调用。只需确保返回对 this-instance 的引用,如果要在对象实例上调用函数调用,该函数调用已被先前的函数调用修改。

于 2012-09-02T08:53:48.440 回答