1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- // strquote.cpp -- different designs
- #include <iostream>
- #include <string>
- using namespace std;
- string version1(const string & s1, const string & s2);
- const string & version2(string & s1, const string & s2); // has side effect
- const string & version3(string & s1, const string & s2); // bad design
-
- int main()
- {
- string input;
- string copy;
- string result;
- cout << "Enter a string: ";
- getline(cin, input);
- copy = input;
- cout << "Your string as entered: " << input << endl;
- result = version1(input, "***");
- cout << "Your string enhanced: " << result << endl;
- cout << "Your original string: " << input << endl;
-
- result = version2(input, "###");
- cout << "Your string enhanced: " << result << endl;
- cout << "Your original string: " << input << endl;
- cout << "Resetting original string.\n";
- input = copy;
- result = version3(input, "@@@");
- cout << "Your string enhanced: " << result << endl;
- cout << "Your original string: " << input << endl;
- // cin.get();
- // cin.get();
- return 0;
- }
- string version1(const string & s1, const string & s2)
- {
- string temp;
- temp = s2 + s1 + s2;
- return temp;
- }
- const string & version2(string & s1, const string & s2) // has side effect
- {
- s1 = s2 + s1 + s2;
- // safe to return reference passed to function
- return s1;
- }
- const string & version3(string & s1, const string & s2) // bad design
- {
- string temp;
- temp = s2 + s1 + s2;
- // unsafe to return reference to local variable
- return temp;
- }
|