C++/函数中的引用

标签 c++ c++11 iostream

<分区>

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);
        // ...

我不太明白这个函数中的引用是什么意思,删除引用就报错

最佳答案

引用意味着从函数返回的对象的身份与调用者将接收到的对象的身份相同。换句话说,它不是拷贝,而是同一个对象。由于返回的对象也是函数的参数之一,也是通过引用获取的,因此返回的对象与传入的对象相同。

删除引用时出现错误的原因是没有它,您将尝试按值返回流,这需要复制构造函数。但是 std::istream 是不可复制的,它的复制构造函数被显式删除。

关于C++/函数中的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29573616/

相关文章:

C++11 最佳参数传递

c++ - GLFW 返回错误的 GL_VERSION

c++ - 对于等待工作线程的主机线程,我应该使用哪种内存顺序?

c++ - 防止覆盖和/或隐藏基类函数 (C++ 11)

c++ - cout doubles 不切割变量

c++ - 完全与 View 层无关的应用程序架构

c++ - gcc AtomicBuiltins gcc 4.1.1 中的奇怪行为

c++ - 链接器看不到基类(纯虚拟)中定义的模板函数

c - 扫描文件时C中的无限循环

c++ - 如果将 fstream 声明为类的成员,如何实例化它?