引用非常适合于结构和类,下面的例子就演示了这一点。

// Chapter8.2.4_Example8.6strc_ref.cpp.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
// Chapter8.2.4_Example8.6strc_ref.cpp.cpp :本例子演示将引用应用于结构

#include <iostream>
#include <string>
struct  free_throws
{
    std::string name;
    int made;
    int attempts;
    float percent;
};
void display(const free_throws &ft);
void set_pc(free_throws& ft);
free_throws & accumulate(free_throws &target,const free_throws &source);

int main()
{
  //  std::cout << "Hello World!\n";
    //部分初始化-其他的成员初始化为0
    free_throws  one= {"Ifelsa Branch",13,14};
    free_throws  two=  { "Andor Knott",10,16 };
    free_throws three= { "Minnie Max",7,9 };
    free_throws four= { "Whily Looper",5,9 };
    free_throws five= { "Long Long",6,14 };
    free_throws team= { "Throwgoods",0,0 };
    //未做初始化
    free_throws dup;
    set_pc(one);
    display(one);
    accumulate(team,one);
    display(team);

//使用返回值作为参数
    display(accumulate(team, two));
    accumulate(accumulate(team,three),four);
    display(team);

//使用返回值赋值
    dup = accumulate(team, five);
    std::cout << "Displaying team:\n";
    display(team);
    std::cout << "Displaying dup after assignment:\n";
    display(dup);
    set_pc(four);
    //不好的赋值
    accumulate(dup,five) = four;
    std::cout << "Displaying dup after ill-advised assignment:\n";
    display(dup);
    return 0;
}
void display(const free_throws & ft)
{
    using std::cout;
    cout << "Name:" << ft.name << '\n';
    cout << "Made:" << ft.made << '\n';
    cout << "Attempts:" << ft.attempts << '\n';
    cout << "Percent:" << ft.percent << '\n';
}
void set_pc(free_throws& ft)//该函数的功能是计算已经进球和射门次数的比值,就是进球率了,set_pc 代表设置百分比
{
    if (ft.attempts != 0)
        ft.percent = 100.0f * float(ft.made) / float(ft.attempts);
    else
        ft.percent = 0;    
}
free_throws& accumulate(free_throws& target, const free_throws& source)//这是累计起来的射门次数和已经的进球
{
    target.attempts += source.attempts;
    target.made += source.made;
    set_pc(target);
    return target;

}

运行结果:

Name:Ifelsa Branch
Made:13
Attempts:14
Percent:92.8571
Name:Throwgoods
Made:13
Attempts:14
Percent:92.8571
Name:Throwgoods
Made:23
Attempts:30
Percent:76.6667
Name:Throwgoods
Made:35
Attempts:48
Percent:72.9167
Displaying team:
Name:Throwgoods
Made:41
Attempts:62
Percent:66.129
Displaying dup after assignment:
Name:Throwgoods
Made:41
Attempts:62
Percent:66.129
Displaying dup after ill-advised assignment:
Name:Whily Looper
Made:5
Attempts:9
Percent:55.5556

C++PrimerPlus(第6版)中文版:Chapter8.2.4_Example8.6strc_ref.cpp相关推荐

  1. C++PrimerPlus(第6版)中文版:Chapter16.4.6关联容器_setops.cpp

    本小节主要讲set的使用方法. 关联容器将值和键关联在一起,并使用键来查找值. 关联容器的优点在于:它提供了对元素的快速访问.插入元素的时候,不需要指定插入位置,因为关联容器是排过序的,它知道新元素来 ...

  2. C++PrimerPlus(第6版)中文版:Chapter16.1string类_16.3hangman.cpp

    这是一个历史悠久的小游戏,早在维多利亚时代就已流行起来,规则简单且有趣,在7步之内猜出单词,否则小人将会"上吊". Hangman直译为"上吊的人",是一个猜单 ...

  3. WCF服务编程(4):《WCF服务编程》第3版中文版翻译结束,即将出版

    原文地址: <WCF服务编程>第4版本翻译完毕!2016年底应该出版 [置顶]↑ WCF服务编程(4):<WCF服务编程>第3版中文版翻译结束,即将出版 ↑ 作为世界范围内最经 ...

  4. python cookbook pdf下载-Python Cookbook 第3版 中文版.pdf

    作 者 :(美)比斯利,(美)琼斯著 出版发行 : 北京:人民邮电出版社 , 2015.05 ISBN号 :978-7-115-37959-7 页 数 : 684 原书定价 : 108.00 开本 : ...

  5. C++Primer Plus第6版C Primer Plus第6版 中文版免费分享啦

    最近在学习C++,用的资料是师兄分享的经典书籍<C++Primer Plus第6版中文版>的PDF,自带书签,使用很方便.但师兄说这个是他在网上花了积分才下载下来的,这让我很是吃惊,因为作 ...

  6. python学习手册-Python学习手册(第4版) 中文版.pdf

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspPython Python学习手册(第4版) 中文版.pdf11 ...

  7. C Primer Plus(第5版)中文版

    1. 在声明一个简单变量和数组时使用关键字const很简单.指针则要复杂一些,因为不得不把让指针本身成为const与让指针指向的值成为const区分开来.下面的声明表明pf指向的值必须是不变的: 但p ...

  8. UNIX网络编程.卷1,套接字联网API(第3版)(中文版)(Stevens经典著作,两位顶级网络编程专家应邀执笔修订)...

    UNIX网络编程.卷1,套接字联网API(第3版)(中文版)(Stevens经典著作,两位顶级网络编程专家应邀执笔修订) 基本信息 原书名: Unix Network Programming, Vol ...

  9. C Primer Plus第六版(中文版)编程练习答案(完美修订版)汇总

    //本文是博主编写的C Primer Plus第六版(中文版)编程练习答案的所有链接; //使用超链接汇总于此,若是有用请点赞收藏并分享给他人; C Primer Plus 第六版(中文版)第二章(完 ...

最新文章

  1. 汇编语言程序设计 实验九
  2. TCP/IP之传输层(一)
  3. register_globals(全局变量注册开关)
  4. 天哪,flash cs4可以使动态文本旋转了
  5. Flask源码解析:从第一个版本开始阅读Flask源码
  6. 画面测试时,图片显示时,0件与N件的意义!
  7. javascript 常用代码技巧大收集
  8. (3)fastjson带有转义字符的数据格式处理
  9. 密度泛函 matlab,dft计算(密度泛函理论dft计算)
  10. 第十五届全国大学生智能车山东赛区最终奖项
  11. 谷歌成功利用一台 54 量子比特的量子计算机
  12. python语义分析_Python自然语言分析
  13. 菜鸟的数学建模之路(三):线性与非线性拟合
  14. Ajax学习一 创建Ajax对象(高洛峰)
  15. java集合面试锦集
  16. 计算机状态oxcoooooe9,电脑蓝屏后开机显示状态Oxcoooooe9
  17. 必知的Python 五个精彩彩蛋
  18. 信安学习-day16
  19. Win2003优化方法
  20. C/C++笔试题(13)

热门文章

  1. ubuntu软件源的更新方法
  2. 我们常说的swap函数到底该怎么使用?
  3. 苹果计算机怎么返回上一步操作,iphone12怎么关闭程序,iphone12怎么返回上一步的教程...
  4. web网页端禁止开发者模式
  5. 小程序项目:微信小程序奶茶店在线点单系统ssm框架
  6. Charles SSL黑白名单
  7. linux安装mysql8
  8. python pywin32教程_python pywin32学习笔记
  9. 清华计算机在线课程,清华大学计算机专业课程表.docx
  10. [算法讲解] KMP EXKMP : next与extend的羁绊