fork download
  1. #include <iostream>
  2.  
  3. class Foo {
  4. public:
  5. double m_foo;
  6. Foo(double foo) : m_foo(foo) {}
  7. Foo add(Foo f) { f.m_foo += m_foo; return f; } // returns temporary!
  8. };
  9.  
  10. class Bar {
  11. public:
  12. Foo m_foo1;
  13. Foo m_foo2;
  14. Foo m_foo3;
  15. Bar(const Foo &foo1, const Foo &foo2);
  16. };
  17.  
  18. Bar::Bar(const Foo &foo1, const Foo &foo2)
  19. : m_foo1(foo1)
  20. , m_foo2(foo2)
  21. , m_foo3(m_foo1.add(m_foo2))
  22. {
  23. }
  24.  
  25. int main() {
  26. Foo foo1(20.0);
  27. Foo foo2(22.0);
  28. Bar bar(foo1, foo2);
  29.  
  30. std::cout << bar.m_foo3.m_foo << "\n";
  31.  
  32. return 0;
  33. }
Success #stdin #stdout 0s 3460KB
stdin
Standard input is empty
stdout
42