引用非常适合于结构和类,下面的例子就演示了这一点。
// Chapter8.2.4_Example8.6strc_ref.cpp.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
// Chapter8.2.4_Example8.6strc_ref.cpp.cpp :本例子演示将引用应用于结构
#include
#include
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



