>>140
こんな感じか?

#include <iostream>
#include <vector>
using namespace std;

typedef void (*function)(void);
typedef vector<function> flist;
class functions {
private:
  flist ff;
  void clear(void) { ff.clear(); }
  void add(function f) { ff.push_back(f); }
  void assign(function f) { clear(); add(f); }
public:
  functions() { clear(); }
  functions(function f) { assign(f); }
  functions& operator=(function f) { assign(f); return *this; }
  functions& operator+=(function f) { add(f); return *this; }
  operator()(void) {
    for (flist::iterator pf = ff.begin(); pf != ff.end(); pf++) { (*pf)(); }
  }
};

void p1(void) { cout << "おらおら" << endl; }
void p2(void) { cout << "ぷすぷす" << endl; }

int main(int argc, char* argv[])
{
  p1();  //<--オラオラが表示されるぞ
  p2();  //<--プスプスが表示されるぞ

  functions f = p1;
  f += p2;//<--足し算したぞ
  f();  //<--オラオラプスプスが表示されるぞ

  return 0;
}