fork download
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class SimpleCat
  6. {
  7. public:
  8. SimpleCat (int age, int weight);
  9. ~SimpleCat() {}
  10. int GetAge() { return itsAge; }
  11. int GetWeight() { return itsWeight; }
  12.  
  13. private:
  14. int itsAge;
  15. int itsWeight;
  16. };
  17.  
  18. SimpleCat::SimpleCat(int age, int weight):
  19. itsAge(age), itsWeight(weight) {}
  20.  
  21. SimpleCat & TheFunction();
  22.  
  23. int main()
  24. {
  25. SimpleCat & rCat = TheFunction();
  26. int age = rCat.GetAge();
  27. cout << "rCat is " << age << " years old!\n";
  28. cout << "&rCat: " << &rCat << endl;
  29. // How do you get rid of that memory?
  30. SimpleCat * pCat = &rCat;
  31. delete pCat;
  32. // Uh oh, rCat now refers to ??
  33. return 0;
  34. }
  35.  
  36. SimpleCat &TheFunction()
  37. {
  38. SimpleCat * pFrisky = new SimpleCat(5,9);
  39. cout << "pFrisky: " << pFrisky << endl;
  40. return *pFrisky;
  41. }
Success #stdin #stdout 0s 3468KB
stdin
Standard input is empty
stdout
pFrisky: 0x9342a10
rCat is 5 years old!
&rCat: 0x9342a10