fork download
  1. #include <iostream>
  2.  
  3. struct Foo
  4. {
  5. void* address;
  6. bool testFlag;
  7.  
  8. Foo ( ) : address(NULL), testFlag(false)
  9. {
  10. std::cout << "Foo default constructor called" << std::endl;
  11. }
  12. explicit Foo (bool Flag) : address(NULL), testFlag(Flag)
  13. {
  14. std::cout << "Foo (bool) constructor called" << std::endl;
  15. }
  16. explicit Foo (void* Pointer) : address(Pointer), testFlag(false)
  17. {
  18. std::cout << "Foo (void const*) constructor called" << std::endl;
  19. }
  20. Foo (void* Pointer, bool Flag) : address(Pointer), testFlag(Flag)
  21. {
  22. std::cout << "Foo (void*, bool) constructor called" << std::endl;
  23. }
  24. };
  25.  
  26. int main(void)
  27. {
  28. std::size_t* test = new std::size_t;
  29.  
  30. Foo a (test);
  31. std::cout << a.address << ' ' << a.testFlag << std::endl;
  32.  
  33. Foo b (false);
  34. std::cout << b.address << ' ' << b.testFlag << std::endl;
  35.  
  36. Foo c (true);
  37. std::cout << c.address << ' ' << c.testFlag << std::endl;
  38.  
  39. Foo d;
  40. std::cout << d.address << ' ' << d.testFlag << std::endl;
  41.  
  42. Foo e (test, true);
  43. std::cout << e.address << ' ' << e.testFlag << std::endl;
  44.  
  45. delete test;
  46. }
Success #stdin #stdout 0s 3016KB
stdin
Standard input is empty
stdout
Foo (void const*) constructor called
0x8439008 0
Foo (bool) constructor called
0 0
Foo (bool) constructor called
0 1
Foo default constructor called
0 0
Foo (void*, bool) constructor called
0x8439008 1