class mystring {
friend ostream& operator<<(ostream &out, const mystring ss) {
out << ss.s;
return out;
}
private:
string s;
public:
mystring(const char ss[]) {
cout << "constructing mystring : " << ss << endl;
s = ss;
}
};
void outputStringByRef(const mystring &ss) {
cout << "outputString(const string&) " << ss << endl;
}
void outputStringByVal(const mystring ss) {
cout << "outputString(const string) " << ss << endl;
}
int main(void) {
outputStringByRef("string by reference");
outputStringByVal("string by value");
outputStringByRef(mystring("string by reference explict call mystring consructor"));
outputStringByVal(mystring("string by value explict call mystring constructor"));
} ///:~
उपर्युक्त उदाहरण को ध्यान में रखते हुए, हम पास-दर-संदर्भ चर को संशोधित नहीं कर सके, न ही हम पास-दर-मूल्य चर को संशोधित कर सकते हैं। प्रत्येक विधियों का आउटपुट समान है। चूंकि इन दोनों के बीच कोई अंतर नहीं है विधि, सी ++ दोनों विधियों का समर्थन क्यों करते हैं?एफ (कॉन्स स्ट्रिंग और) और एफ (कॉन्स स्ट्रिंग) के बीच कोई अंतर?
धन्यवाद।
संबंधित http://stackoverflow.com/questions/1567138/const-t-arg-vs-t-arg/1567186#1567186 –