fork(3) download
  1. #include <vector>
  2. #include <string>
  3. #include <iostream>
  4. using namespace std;
  5.  
  6. void f1()
  7. {
  8. int a = 1;
  9. int b = 2;
  10.  
  11. cout<<++a+b--<<endl;
  12. }
  13.  
  14. namespace test2
  15. {
  16. //Найти ошибку компиляции
  17. /*void f(string & s)
  18. {
  19. cout<<s<<endl;
  20. }*/
  21. //Решение
  22. void f(const string & s)
  23. {
  24. cout<<s<<endl;
  25. }
  26.  
  27. }
  28. void test3()
  29. {
  30. vector<int> v;
  31. v.reserve(10);
  32. for(int i=0;i<10;++i)
  33. v[i]=1;
  34. v.push_back(2);
  35. for(auto a:v)
  36. cout<<a<<endl;
  37. }
  38.  
  39. //Что в фрагменте кода неправильно
  40. //Удаление массива - delete[] a
  41. //Считают, что есть ещё ошибки, какие не знаю
  42. void test4()
  43. {
  44. char* a=new char[10];
  45. if(a)
  46. {
  47. delete a;
  48. }
  49. }
  50.  
  51. namespace test5
  52. {
  53. struct A {
  54. virtual void f(){cout<<"A"<<endl;}
  55. };
  56. struct B {
  57. void f(){cout<<"B"<<endl;}
  58. };
  59. struct C:A,B {
  60. void f(){cout<<"C"<<endl;}
  61. };
  62. }
  63.  
  64. namespace test6
  65. {
  66. template<class T>
  67. struct A {
  68. virtual void f(){T()();}
  69. };
  70. struct B {
  71. void operator()(){cout<<"B"<<endl;}
  72. };
  73. struct C:B {
  74. void operator()(){cout<<"C"<<endl;}
  75. };
  76. template<>
  77. struct A<B>
  78. {
  79. void f()
  80. {
  81. cout<<"A"<<endl;
  82. }
  83. };
  84. }
  85.  
  86. namespace test7
  87. {
  88. struct A
  89. {
  90. A()
  91. {
  92. cout<<"construct"<<endl;
  93. }
  94. A(const A&)
  95. {
  96. cout<<"copy"<<endl;
  97. }
  98. A& operator=(const A&)
  99. {
  100. cout<<"assign"<<endl;
  101. return *this;
  102. }
  103. };
  104.  
  105. A f()
  106. {
  107. return A();
  108. }
  109. }
  110.  
  111. int main()
  112. {
  113. cout<<"-----------------test1---------------------\n";
  114. f1();
  115. cout<<"-----------------test2---------------------\n";
  116. test2::f("hello");
  117. cout<<"-----------------test3---------------------\n";
  118. test3();
  119. cout<<"-----------------test4---------------------\n";
  120. test4();
  121. cout<<"-----------------test5---------------------\n";
  122. test5::A* a = new test5::C();
  123. test5::B* b = new test5::C();
  124. a->f();
  125. b->f();
  126. cout<<"-----------------test6---------------------\n";
  127. test6::A<test6::B>().f();
  128. test6::A<test6::C>().f();
  129. cout<<"-----------------test7---------------------\n";
  130. test7::A a1 = test7::f();
  131. test7::A a2 = a1;
  132. return 0;
  133. }
Success #stdin #stdout 0s 3472KB
stdin
Standard input is empty
stdout
-----------------test1---------------------
4
-----------------test2---------------------
hello
-----------------test3---------------------
2
-----------------test4---------------------
-----------------test5---------------------
C
B
-----------------test6---------------------
A
C
-----------------test7---------------------
construct
copy