fork download
  1. #include <iostream>
  2. #include <functional>
  3. #include <memory>
  4.  
  5. struct A {
  6. virtual void operator()() {
  7. std::cout << "classA" << std::endl;
  8. }
  9. virtual ~A() {}
  10. };
  11.  
  12. struct B : public A {
  13. void operator()() {
  14. std::cout << "classB" << std::endl;
  15. }
  16. };
  17.  
  18. struct C : public B {
  19. void operator()() final {
  20. std::cout << "classC" << std::endl;
  21. }
  22. };
  23.  
  24. int main()
  25. {
  26. std::function<void(void)>func[] = {
  27. A(),
  28. B(),
  29. C(),
  30. };
  31.  
  32. for (auto a : func)
  33. a();
  34. }
Success #stdin #stdout 0s 3472KB
stdin
Standard input is empty
stdout
classA
classB
classC