第七章 习题7-11-习题7-20

习题7-11

#include <iostream>
#include<string>
using namespace std;

struct Sales_data {
	//构造函数
	Sales_data() = default;
	Sales_data(const string &s):bookNo(s){}
	Sales_data(const string &s,unsigned n,double p):
		bookNo(s),units_sold(n),revenue(p*n){}
	Sales_data(istream &is);


	string bookNo;
	unsigned units_sold=0;
	double revenue=0.0 ;
};
istream &read(istream &, Sales_data &);
int main()
{
	Sales_data sale1;
	cout << sale1.bookNo << "  " << sale1.units_sold << "  " << sale1.revenue << endl;
	Sales_data sale2("You");
	cout << sale2.bookNo << "  " << sale2.units_sold << "  " << sale2.revenue << endl;
	Sales_data sale3("You", 3, 4);
	cout << sale3.bookNo << "  " << sale3.units_sold << "  " << sale3.revenue << endl;
	Sales_data sale4(cin);
	cout << sale4.bookNo << "  " << sale4.units_sold << "  " << sale4.revenue << endl;

}
Sales_data::Sales_data(istream &is) 
{ 
	read(is, *this); 
}
istream &read(istream &is, Sales_data &item)
{

	double price = 0.0;
	is >> item.bookNo >> item.units_sold >> price;
	item.revenue = price*item.units_sold;
	return is;
}

习题7-12  这道题涉及到read函数包含sales_data 的调用,而定义构造函数的时候又需要已知read函数,所以先声明一下类名;

#include <iostream>
#include<string>
using namespace std;
struct Sales_data;
istream &read(istream &, Sales_data &);
struct Sales_data {
	//构造函数
	Sales_data() = default;
	Sales_data(const string &s):bookNo(s){}
	Sales_data(const string &s,unsigned n,double p):
		bookNo(s),units_sold(n),revenue(p*n){}
	Sales_data(istream &is) {read(is, *this);}


	string bookNo;
	unsigned units_sold=0;
	double revenue=0.0 ;
};
int main()
{
	Sales_data sale1;
	cout << sale1.bookNo << "  " << sale1.units_sold << "  " << sale1.revenue << endl;
	Sales_data sale2("You");
	cout << sale2.bookNo << "  " << sale2.units_sold << "  " << sale2.revenue << endl;
	Sales_data sale3("You", 3, 4);
	cout << sale3.bookNo << "  " << sale3.units_sold << "  " << sale3.revenue << endl;
	Sales_data sale4(cin);
	cout << sale4.bookNo << "  " << sale4.units_sold << "  " << sale4.revenue << endl;

}
istream &read(istream &is, Sales_data &item)
{

	double price = 0.0;
	is >> item.bookNo >> item.units_sold >> price;
	item.revenue = price*item.units_sold;
	return is;
}

习题7-13

Sales_data total(cin);
if(cin) 
{
   Sales_data tran(cin);
.....
}

习题7-14

struct Sales_data
{
     Sales_data():bookNo(""),units_sold(0),revenue(0.0){}


}

习题7-15

struct Person
{
    string name;
    string address;
    Person():name(""),adress(""){}
}

习题7-16

位置和次数没有限定。接口数据之类的写在public后面,不想让其他人看到的数据及具体实现细节程序写在private后面;

习题7-17

默认的访问权限不一样,struct默认数据类型是public,class默认数据类型是private;

习题7-18

封装实现了类的接口和实现的分离,隐藏了类的实现细节,用户只能接触到类的接口;

习题7-19

在我的Person类中可以将名字声明为public,地址声明为private,因为名字可以让人看见,为了安全起见,地址保守秘密;

习题7-20

类的友元函数可以访问类的非公有成员,这样就破坏了类的封装性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值