void outputString(const string &ss) {
cout << "outputString(const string& ) " + ss << endl;
}
int main(void) {
outputString("constant tranformed to reference argument");
//! outputString(new string("abc")); new only return pointer to object
return 0;
}
由于它禁止创建临时对象引用转换为方法,这种语法应该是无用的,甚至会使事情变得更加混乱。那么为什么 C++ 会费心支持这种语法呢?
编辑:说实话,我不明白你的表示。考虑到上面的例子,我们通常会使用void outputString(const string ss)
而不是。void outputString(const string &ss)
我认为正常的事情是“按值传递”方法处理常量/变量和“按引用传递”方法只处理变量。我们应该使用const type-id &
而不是const type-id
常量的唯一原因是效率,因为“按引用传递”方法仅采用原始常量/对象变量的指针(地址),但“按值传递”方法需要执行复制。
谢谢。