//returns a reference to a string
string& refToElement(vector<string>& vec, int i);
int main()
{
vector<string> inventory;
inventory.push_back("sword");
inventory.push_back("armor");
inventory.push_back("shield");
//displays string that the returned reference refers to
cout << "Sending the returned reference to cout:\n";
cout << refToElement(inventory, 0) << "\n\n";
//assigns one reference to another-inexpensive assignment
cout << "Assigning the returned reference to another reference.\n";
string& rStr = refToElement(inventory, 1);
cout << "Sending the new reference to cout:\n";
cout << rStr << "\n\n";
//copies a string object-expensive assignment
cout << "Assigning the returned reference to a string object.\n";
string str = refToElement(inventory, 2);
cout << "Sending the new string object to cout:\n";
cout << str << "\n\n";
//altering the string object through a returned reference
cout << "Altering an object through a returned reference.\n";
rStr = "Healing Potion";
cout << "Sending the altered object to cout:\n";
cout << inventory[1] << endl;
return 0;
}
//returns a reference to a string
string& refToElement(vector<string>& vec, int i)
{
return vec[i];
}
it's output got as:
Sending the returned reference to cout:
sword
Assigning the returned reference to another reference.
Sending the new reference to cout:
armor
Assigning the returned reference to a string object.
Sending the new string object to cout:
shield
Altering an object through a returned reference.
Sending the altered object to cout:
Healing Potion
in that I don't understand How to get the last line of output i.e,
Altering an object through a returned reference.
Sending the altered object to cout:
Healing Potion
Do any one can explain this. I am waiting your reply.
When you get the reference back and assign it to rStr, you basically make rStr an alternate way to refer to vec[1]. So when you change it, so too do you change vec[1].