C++/函数中的引用
C++/reference in function
istream & /* <--here */ read(istream &is, Sales_data &item)
{
double price = 0;
is >> item.bookNo >> item.units_sold >> price;
item.revenue = price * item.units_sold;
return is;
}
//main function
Sales_data total;
if (read(cin,total))
{
Sales_data trans;
read(cin,trans);
// ...
我不太明白这个函数中的引用是什么意思,删除引用就报错
引用意味着从函数中 returned 的对象的身份与调用者将接收到的对象的身份相同。换句话说,它不是副本,而是同一个对象。由于 returned 对象也是函数的参数之一,它也是通过引用获取的,因此对象 returned 与传入的对象相同。
删除引用时出现错误的原因是,如果没有它,您将尝试按值 return 流,这需要复制构造函数。但是std::istream
是不可复制的,它的复制构造函数被显式删除了。
istream & /* <--here */ read(istream &is, Sales_data &item)
{
double price = 0;
is >> item.bookNo >> item.units_sold >> price;
item.revenue = price * item.units_sold;
return is;
}
//main function
Sales_data total;
if (read(cin,total))
{
Sales_data trans;
read(cin,trans);
// ...
我不太明白这个函数中的引用是什么意思,删除引用就报错
引用意味着从函数中 returned 的对象的身份与调用者将接收到的对象的身份相同。换句话说,它不是副本,而是同一个对象。由于 returned 对象也是函数的参数之一,它也是通过引用获取的,因此对象 returned 与传入的对象相同。
删除引用时出现错误的原因是,如果没有它,您将尝试按值 return 流,这需要复制构造函数。但是std::istream
是不可复制的,它的复制构造函数被显式删除了。