As C++ developers we have many choices for functions. We can use non-member functions or member functions. We can make functions pure (output depends only on function arguments) or not. We can use virtual functions or opt for generality at compile-time through templates. Function arguments can be passed via const reference, non-const reference, by value, as pointer, and since C++11 as rvalue reference. And for return values we can choose between out-parameters and the actual return statement of the language.
So many choices can make it hard to choose the right design.
In this one day training we'll look at the motivation for having those choices and at the implications for software design and the impact on optimization and performance. There will be just enough theory presented to enable participants to practice different approaches in small teams. After this day you should be more confident in choosing a certain design and be able to produce more intuitively understandable code.
the instructor: