| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4127 人关注过本帖
标题:一个小白问题,咋也想不通。。关于引用的。。
只看楼主 加入收藏
哒哒哒啦啦啦
Rank: 1
等 级:新手上路
帖 子:75
专家分:4
注 册:2016-2-26
结帖率:76.92%
收藏
已结贴  问题点数:20 回复次数:8 
一个小白问题,咋也想不通。。关于引用的。。

#include <string>

这是自定义了一个头文件
*************************************************************************8
struct Sales_data {
    std::string isbn() const { return bookNo; };
    Sales_data& combine(const Sales_data & );   //*********就是不明白这里的形参为啥要用引用,我又不改变他的数值。。

    std::string bookNo;
    unsigned units_sold = 0;
    double revenue = 0.0;
};

Sales_data& Sales_data::combine(const Sales_data & rhs)
{
    units_sold += rhs.units_sold;
    revenue += rhs.revenue;
    return *this;
}
****************************************************************
这是源文件。。
#include "C:\Users\Jin\Desktop\ex7_02.h"
#include <iostream>
using std::cin; using std::cout; using std::endl;

int main()
{
    Sales_data total;
    if (cin >> total.bookNo >> total.units_sold >> total.revenue)
    {
        Sales_data trans;
        while (cin >> trans.bookNo >> trans.units_sold >> trans.revenue) {
            if (total.isbn() == trans.isbn())
                (trans);
            else {
                cout << total.bookNo << " " << total.units_sold << " " << total.revenue << endl;
                total = trans;
            }
        }
        cout << total.bookNo << " " << total.units_sold << " " << total.revenue << endl;
    }
    else
    {
        std::cerr << "No data?!" << std::endl;
        return -1;
    }

    return 0;
}

搜索更多相关主题的帖子: include revenue double return 
2016-05-14 10:51
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:15 
该说的不能少,不该说的不能多,下次这么问
struct Sales_data {
    Sales_data& combine(const Sales_data & );   //*********就是不明白这里的形参为啥要用引用,我又不改变他的数值。。

第一,避免构造拷贝的运行开销
第二,对于构造函数,如果参数本身又调用构造函数,就成了递归了
2016-05-14 11:01
哒哒哒啦啦啦
Rank: 1
等 级:新手上路
帖 子:75
专家分:4
注 册:2016-2-26
收藏
得分:0 
回复 2楼 rjsp
可是我只是定义了一个sales_data类的形参,并没有执行什么能进入死循环的函数啊。。我只是读取它的几个参数用于相加嘛?
2016-05-14 12:09
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
对于 Sales_data& combine(const Sales_data & );
你不想用 引用 也行,虽然奇怪别扭,但不违背语法,且只是自娱自乐,别人也管不了你
2016-05-14 12:24
哒哒哒啦啦啦
Rank: 1
等 级:新手上路
帖 子:75
专家分:4
注 册:2016-2-26
收藏
得分:0 
回复 4楼 rjsp
编译通不过的。。
*************************************
错误    LNK1168   
无法打开 c:\users\jin\documents\visual studio 2015\Projects\ConsoleApplication6.h\Debug\ConsoleApplication6.exe 进行写入    ConsoleApplication6    c:\Users\Jin\documents\visual studio 2015\Projects\ConsoleApplication6.h\ConsoleApplication6\LINK    1   

ConsoleApplication6是源文件的名字
2016-05-14 12:32
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
“无法打开 ……\ConsoleApplication6.exe 进行写入”
------ 这种错误,你希望别人怎么帮你呢?!
2016-05-14 13:05
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:5 
确定你前一次调试运行的程序窗体是关掉了的?
2016-05-14 13:30
哒哒哒啦啦啦
Rank: 1
等 级:新手上路
帖 子:75
专家分:4
注 册:2016-2-26
收藏
得分:0 
回复 6楼 rjsp
睡了一觉再试就不出错了。。难道是调试程序忘了关?。
2016-05-14 16:53
哒哒哒啦啦啦
Rank: 1
等 级:新手上路
帖 子:75
专家分:4
注 册:2016-2-26
收藏
得分:0 
回复 7楼 yangfrancis
可以了。。不知道为啥,,,
2016-05-14 16:53
快速回复:一个小白问题,咋也想不通。。关于引用的。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015890 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved