fork download
  1. #include <iostream>
  2. class Animal {
  3. protected:
  4. int a;
  5. public:
  6. friend void Swap(Animal &A,Animal &B);
  7. int GetA() const { return a; }
  8. };
  9.  
  10. void Swap(Animal &A, Animal &B) {
  11. int i = A.a;
  12. A.a = B.a;
  13. B.a = i;
  14. }
  15.  
  16. class People : public Animal
  17. {
  18. public:
  19. People() {
  20. a = 1;
  21. }
  22. };
  23.  
  24. class Fish : public Animal
  25. {
  26. public:
  27. Fish() {
  28. a = 2;
  29. }
  30. };
  31.  
  32. Animal *gA, *gB;
  33.  
  34. int main() {
  35. gA = new People;
  36. gB = new Fish;
  37. std::cout << gA->GetA() << ", " << gB->GetA() << std::endl;;
  38. Swap(*gA, *gB);
  39. std::cout << gA->GetA() << ", " << gB->GetA() << std::endl;
  40. return 0;
  41. }
  42.  
Success #stdin #stdout 0s 3472KB
stdin
Standard input is empty
stdout
1, 2
2, 1