Guest User

Untitled

a guest
Oct 15th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.18 KB | None | 0 0
  1. #include <iostream>
  2. #include <sstream>
  3.  
  4. std::stringstream ss;
  5.  
  6. class A {
  7. public:
  8. void foo() {
  9. ss << "A::foo";
  10. }
  11.  
  12. virtual void bar() {
  13. ss << "A::bar";
  14. }
  15. };
  16.  
  17. class B : public A {
  18. public:
  19. void foo() {
  20. ss << "B::foo";
  21. }
  22.  
  23. virtual void bar() {
  24. ss << "B::bar";
  25. }
  26. };
  27.  
  28. void foo(A a) {
  29. ss << "foo::a.foo = ";
  30. a.foo();
  31. ss << std::endl;
  32.  
  33. ss << "foo::a.bar = ";
  34. a.bar();
  35. ss << std::endl;
  36. }
  37.  
  38. void bar(B b) {
  39. ss << "bar::b.foo = ";
  40. b.foo();
  41. ss << std::endl;
  42.  
  43. ss << "bar::b.bar = ";
  44. b.bar();
  45. ss << std::endl;
  46. }
  47.  
  48. void baz(A &a) {
  49. ss << "baz::a.foo = ";
  50. a.foo();
  51. ss << std::endl;
  52.  
  53. ss << "baz::a.bar = ";
  54. a.bar();
  55. ss << std::endl;
  56. }
  57.  
  58. void creative_function_name(A *a) {
  59. ss << "creative_function_name::a->foo = ";
  60. a->foo();
  61. ss << std::endl;
  62.  
  63. ss << "creative_function_name::a->bar = ";
  64. a->bar();
  65. ss << std::endl;
  66. }
  67.  
  68. void set_value1(int target, int new_value) {
  69. target = new_value;
  70. }
  71.  
  72. void set_value2(int &target, int new_value) {
  73. target = new_value;
  74. }
  75.  
  76. void set_value3(int *target, int new_value) {
  77. *target = new_value;
  78. }
  79.  
  80. int main() {
  81. int x, y, z;
  82. x = y = z = 0;
  83. set_value1(x, 1);
  84. set_value2(y, 2);
  85. set_value3(&z, 3);
  86. ss << "x = " << x << std::endl;
  87. ss << "y = " << y << std::endl;
  88. ss << "z = " << z << std::endl;
  89.  
  90. A a1 = A();
  91. B b1 = B();
  92. A a2 = b1;
  93. A &a3 = b1;
  94. A *a4 = &a2;
  95.  
  96. ss << "a1.foo = ";
  97. a1.foo();
  98. ss << std::endl;
  99.  
  100. ss << "a1.bar = ";
  101. a1.bar();
  102. ss << std::endl;
  103.  
  104. ss << "b1.foo = ";
  105. b1.foo();
  106. ss << std::endl;
  107.  
  108. ss << "b1.bar = ";
  109. b1.bar();
  110. ss << std::endl;
  111.  
  112. ss << "a2.foo = ";
  113. a2.foo();
  114. ss << std::endl;
  115.  
  116. ss << "a2.bar = ";
  117. a2.bar();
  118. ss << std::endl;
  119.  
  120. ss << "a3.foo = ";
  121. a3.foo();
  122. ss << std::endl;
  123.  
  124. ss << "a3.bar = ";
  125. a3.bar();
  126. ss << std::endl;
  127.  
  128. ss << "a4.foo = ";
  129. a4->foo();
  130. ss << std::endl;
  131.  
  132. ss << "a4.bar = ";
  133. a4->bar();
  134. ss << std::endl;
  135.  
  136. foo(b1);
  137. bar(b1);
  138. baz(b1);
  139. creative_function_name(&b1);
  140.  
  141. std::stringstream in;
  142.  
  143. while(true) {
  144. char c = (char)std::cin.get();
  145. if(std::cin.eof())
  146. break;
  147. in << c;
  148. }
  149.  
  150. std::cout << (in.str() == ss.str() ? "Correct!" : "Fail") << std::endl;
  151.  
  152. return 0;
  153. }
Add Comment
Please, Sign In to add comment