fork(1) download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class InitializeBase
  5. {
  6. public:
  7. virtual ~InitializeBase() = default;
  8.  
  9. bool isInit() const
  10. {
  11. return isInit_;
  12. }
  13.  
  14. void init()
  15. {
  16. doInit();
  17. isInit_ = true;
  18. }
  19.  
  20. private:
  21. virtual void doInit() = 0;
  22.  
  23. bool isInit_ = false;
  24. };
  25.  
  26. class Backdoor : public InitializeBase
  27. {
  28. public:
  29. void init_twice() { doInit(); doInit(); }
  30. void doInit() override { std::cout << "Yes, I can" << std::endl; }
  31. };
  32.  
  33. int main() {
  34. Backdoor bd;
  35. bd.init();
  36. bd.init_twice();
  37. bd.doInit();
  38. }
  39.  
Success #stdin #stdout 0s 3468KB
stdin
Standard input is empty
stdout
Yes, I can
Yes, I can
Yes, I can
Yes, I can