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

// 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. java 计算两个日期之间的天数_Java日期时间API系列22-----Jdk8Month月份和DayOfWeek星期的计算。...
  3. [ASP.NET 控件实作 Day28] 图形验证码控件
  4. 如何成为一名数据中心运维工程师?
  5. YBTOJ洛谷P2387: 魔法森林(LCT)
  6. 3 MapReduce计算模型
  7. 如何为企业量身打造一套高可用系统?
  8. java实现录屏_java录屏截屏: 用java代码实现的录屏和截图截屏,并在springboot上实现...
  9. 10.25模拟 列车调度
  10. 长期在计算机房工作辐射大吗,在机房里工作辐射大吗
  11. 【设计模式02】 抽象工厂模式
  12. A级学科计算机技术,全国学科评估结果出炉 四川高校这些学科进入全国A档
  13. 《当下即是生活》季羡林——读书笔记
  14. 文件处理命令-文件处理命令
  15. 带动画效果的下拉菜单
  16. Pedometer_forAndroid
  17. 精品基于Uniapp+SSM实现的安卓的掌上校园系统
  18. scrapy微博反爬虫_基于Scrapy的微博爬虫设计
  19. webrtc 入门第五章 一对一视频通话实现
  20. Java、JSP公交管理系统的设计

热门文章

  1. HTML菊花图案绘制,国画菊花绘画(图解)
  2. 服务器16g内存装哪个系统,16G内存需要装什么系统_16g内存用什么系统好
  3. C语言实现swap函数
  4. Micro Focus VM Explorer 7 Install
  5. 用户积分体系,你上链了吗?
  6. Python学习路线——Python学习的10大阶段(0基础必须收藏)
  7. 阿里云盘无法登录,提示 重试 网络正在开小差 解决方案
  8. HFSS学习笔记 2 建模过程和长方体建模步骤
  9. 长城台式微型计算机开不了机,台式电脑开不了机怎么办?六个秒招教你排查电脑无法开机的故障所在...
  10. 配音软件免费版哪个好?分享2款好用的配音软件帮你快速配音