Video Coming Soon...
22: Pass by Value, Pass by Reference
View Source file ex22.cpp Only
#include <fmt/core.h>
using fmt::println;
int bad_adder(int a, int b, int result) {
if(a < 0 || b < 0) {
return -1;
} else {
result = a + b;
return 0;
}
}
int error_adder(int a, int b, int& result) {
if(a < 0 || b < 0) {
return -1;
} else {
result = a + b;
return 0;
}
}
void print_result(const std::string& func_name, int a, int b, int err, int result) {
println("{}: a={},b={}, err={}, result={}", func_name, a, b, err, result);
}
int main(int argc, char* argv[]) {
int result = 0;
int err = 0;
err = bad_adder(10, 20, result);
print_result("bad_adder", 10, 20, err, result);
err = bad_adder(-10, 20, result);
print_result("bad_adder", -10, 20, err, result);
err = error_adder(24, 14, result);
print_result("error_adder", 24, 14, err, result);
err = error_adder(-24, 14, result);
print_result("error_adder", -24, 14, err, result);
}
- Teach about using a reference vs. value
- Cover the use as an "out parameter"
- Cover the use as an efficiency thing.
- Specifically cover the
const std::string&idiom. - Talk about when to do it...but at a beginner level.
- Maybe a warning about std::move.
Register for Learn C++ the Hard Way
Register to gain access to additional videos which demonstrate each exercise. Videos are priced to cover the cost of hosting.