【发布时间】:2010-12-29 23:34:11
【问题描述】:
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"));
} ///:~
考虑到上面的例子,我们不能修改传递引用变量,也不能修改传递值变量。每种方法的输出是相同的。由于这两种方法没有区别,为什么 C++ 支持这两种方法?
谢谢。
【问题讨论】:
标签: c++ constants pass-by-reference pass-by-value