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)
. Я думаю, что нормальная вещь - это пройти мимо методы 'value' имеют дело с константами / переменными, а методы 'pass by reference' имеют дело только с переменными. Единственная причина, по которой мы должны использовать const type-id &
вместо const type-id
для констант, - это эффективность, потому что методы 'pass by reference' принимают только указатели (адреса) переменных констант / объектов примитивов, но методы «передать по значению» должны делать копию.
спасибо.