#include <iostream>
#include <string>
void buyCoffee(double& totSmall, double& totMedium, double& totLarge)
{
totSmall = 5;
totMedium = 10;
totLarge = 15;
}
void print(const std::string& header, double totalSmall, double totalMedium, double totalLarge)
{
std::cout << header << "\n";
std::cout << "totalSmall = " << totalSmall
<< ", totalMedium = " << totalMedium
<< ", totalLarge = " << totalLarge << "\n";
}
int main()
{
// This uses explicit references as you had in your example with
// a correction to the second and third variables
{
double totalSmall = 0, totalMedium = 0, totalLarge = 0;
print("Before: ", totalSmall, totalMedium, totalLarge);
double& totSmall = totalSmall, & totMedium = totalMedium, & totLarge = totalLarge;
buyCoffee(totSmall, totMedium, totLarge);
print("After: ", totalSmall, totalMedium, totalLarge);
}
// This just passes the variables to the function
// Since the function accepts them by reference it modifies
// the original variable inside the function
{
double totalSmall = 0, totalMedium = 0, totalLarge = 0;
print("Before: ", totalSmall, totalMedium, totalLarge);
buyCoffee(totalSmall, totalMedium, totalLarge);
print("After: ", totalSmall, totalMedium, totalLarge);
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKdm9pZCBidXlDb2ZmZWUoZG91YmxlJiB0b3RTbWFsbCwgZG91YmxlJiB0b3RNZWRpdW0sIGRvdWJsZSYgdG90TGFyZ2UpIAp7CiAgICB0b3RTbWFsbCA9IDU7CiAgICB0b3RNZWRpdW0gPSAxMDsKICAgIHRvdExhcmdlID0gMTU7Cn0KCnZvaWQgcHJpbnQoY29uc3Qgc3RkOjpzdHJpbmcmIGhlYWRlciwgZG91YmxlIHRvdGFsU21hbGwsIGRvdWJsZSB0b3RhbE1lZGl1bSwgZG91YmxlIHRvdGFsTGFyZ2UpCnsKICAgIHN0ZDo6Y291dCA8PCBoZWFkZXIgPDwgIlxuIjsKICAgIHN0ZDo6Y291dCA8PCAidG90YWxTbWFsbCA9ICIgPDwgdG90YWxTbWFsbAogICAgICAgIDw8ICIsIHRvdGFsTWVkaXVtID0gIiA8PCB0b3RhbE1lZGl1bQogICAgICAgIDw8ICIsIHRvdGFsTGFyZ2UgPSAiIDw8IHRvdGFsTGFyZ2UgPDwgIlxuIjsKfQoKaW50IG1haW4oKSAKewogICAgLy8gVGhpcyB1c2VzIGV4cGxpY2l0IHJlZmVyZW5jZXMgYXMgeW91IGhhZCBpbiB5b3VyIGV4YW1wbGUgd2l0aAogICAgLy8gYSBjb3JyZWN0aW9uIHRvIHRoZSBzZWNvbmQgYW5kIHRoaXJkIHZhcmlhYmxlcwogICAgewogICAgICAgIGRvdWJsZSB0b3RhbFNtYWxsID0gMCwgdG90YWxNZWRpdW0gPSAwLCB0b3RhbExhcmdlID0gMDsKCiAgICAgICAgcHJpbnQoIkJlZm9yZTogIiwgdG90YWxTbWFsbCwgdG90YWxNZWRpdW0sIHRvdGFsTGFyZ2UpOwoKICAgICAgICBkb3VibGUmIHRvdFNtYWxsID0gdG90YWxTbWFsbCwgJiB0b3RNZWRpdW0gPSB0b3RhbE1lZGl1bSwgJiB0b3RMYXJnZSA9IHRvdGFsTGFyZ2U7CiAgICAgICAgYnV5Q29mZmVlKHRvdFNtYWxsLCB0b3RNZWRpdW0sIHRvdExhcmdlKTsKCiAgICAgICAgcHJpbnQoIkFmdGVyOiAiLCB0b3RhbFNtYWxsLCB0b3RhbE1lZGl1bSwgdG90YWxMYXJnZSk7CiAgICB9CgogICAgLy8gVGhpcyBqdXN0IHBhc3NlcyB0aGUgdmFyaWFibGVzIHRvIHRoZSBmdW5jdGlvbgogICAgLy8gU2luY2UgdGhlIGZ1bmN0aW9uIGFjY2VwdHMgdGhlbSBieSByZWZlcmVuY2UgaXQgbW9kaWZpZXMKICAgIC8vIHRoZSBvcmlnaW5hbCB2YXJpYWJsZSBpbnNpZGUgdGhlIGZ1bmN0aW9uCiAgICB7CiAgICAgICAgZG91YmxlIHRvdGFsU21hbGwgPSAwLCB0b3RhbE1lZGl1bSA9IDAsIHRvdGFsTGFyZ2UgPSAwOwoKICAgICAgICBwcmludCgiQmVmb3JlOiAiLCB0b3RhbFNtYWxsLCB0b3RhbE1lZGl1bSwgdG90YWxMYXJnZSk7CgogICAgICAgIGJ1eUNvZmZlZSh0b3RhbFNtYWxsLCB0b3RhbE1lZGl1bSwgdG90YWxMYXJnZSk7CgogICAgICAgIHByaW50KCJBZnRlcjogIiwgdG90YWxTbWFsbCwgdG90YWxNZWRpdW0sIHRvdGFsTGFyZ2UpOwogICAgfQp9Cg==