fork download
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. class MyClass {
  5. public:
  6. double& at(size_t index) { return data_[index]; }
  7. double const& at(size_t index) const { return data_[index]; }
  8. MyClass(size_t size) : data_(size) {}
  9. ~MyClass() { std::cout << "MyClass destroyed" << std::endl; }
  10. private:
  11. std::vector<double> data_;
  12. };
  13.  
  14. const MyClass getMyClass() {
  15. MyClass mc(3);
  16. mc.at(0) = 3.0;
  17. mc.at(1) = 4.0;
  18. mc.at(2) = 5.0;
  19. return mc;
  20. }
  21.  
  22. int main() {
  23. const double &value = getMyClass().at(0);
  24.  
  25. // Undefined behaviour, reference to element of vector that doesn't exist!
  26. std::cout << value << std::endl;
  27. }
Success #stdin #stdout 0s 3428KB
stdin
Standard input is empty
stdout
MyClass destroyed
3