本博客知识记录自己学习中的笔记或者记录,如果有错误欢迎大家纠正。
转载声明出处
练习 2.39 编译下面的程序观察其运行结果,注意如果忘记类定义体后面的分号会发生什么情况?记录下相关信息,以后可能会有用。
struct Foo{/此处为空/} //注意这里没有分号
int main ()
{
retrun 0;
}
自行编译运行查看结果,这里不贴运行结果了
练习2.40 根据自己的理解写出Sales_data类 最好与书中的例子有所区别,
struct Sales_data
{
std::string bookNo;
std::string bookName;
unsigned units_sold=0;
double revenue =0;
double price=0.0f;
}
自己添加其他书应有的属性即可,这里只添加了 书名称和 价格
练习2.41使用自己的Sales_data 类重写1.51节,1.52节,1.6节的练习,眼前先把Sales_data 和main函数放在同一个文件。
读者查考前面章节的练习自己改写相关练习,这里不一一改写。
练习2.43 根据你自己的理解重写一个Sales_data.h头文件,并为此基础重做2.6.2的练习。
头文件Sales_data.h定义如下
#include <string>
#include <iostream>
struct Sales_data
{
std::string bookNo;
unsigned units_sold = 0;
double revenue = 0.0;
void CalcRevenue(double price); //计算收益
double CalcAveragePrice(); //得到平均价格
void SetData(Sales_data data); //设置数据
void AddData(Sales_data data); //增加数据
void Print(); //打印输出 信息
};
void Sales_data::CalcRevenue(double price)
{
revenue = units_sold * price;
}
void Sales_data::SetData(Sales_data data)
{
bookNo = data.bookNo;
units_sold = data.units_sold;
revenue = data.revenue;
}
void Sales_data::AddData(Sales_data data)
{
if (bookNo != data.bookNo) return;
units_sold += data.units_sold;
revenue += data.revenue;
}
double Sales_data::CalcAveragePrice()
{
if (units_sold != 0)
return revenue/units_sold;
else
return 0.0;
}
void Sales_data::Print()
{
std::cout << bookNo << " " << units_sold << " " << revenue << " ";
double averagePrice = CalcAveragePrice();
if (averagePrice != 0.0)
std::cout << averagePrice << std::endl;
else
std::cout << "(no sales)" << std::endl;
}
在源文件调用对应的方法即可完成练习的编写