C++ primer plus第六版课后编程题答案14.2


Pair.cpp不变

Wine2.cpp

//说实话,我之前用的不是包含,所以不太懂这题的意思
//难道说是要定义一个Wine的父类,然后私有派生一个具体的Wine派生类?
//好吧,我姑且就这么理解了
//难道说是继承Pair?实在是有点不可思议啊,好吧,我把它当成是继承Pair了,估计是这个意思
//要你继承那个Pair<valarray<>,valarray<> >这个属性了
#include <iostream>
//#include <vector>
#include <valarray>
#include <string>
#include "Pair.cpp"
using namespace std;
typedef valarray<int> ArrayInt;
typedef Pair<ArrayInt,ArrayInt> PairArray;
class Wine:private PairArray
{
private:
	string label;
	//PairArray pa;
	int yearNum;//永远存储年数,即一共有几种年份的
public:
	Wine(const string l,int y,const int yr[],int bot[])
	{
		label=l;
		yearNum=y;//已经指明了长度
		ArrayInt f(yr,y);//构造valarray<int>数组
		ArrayInt b(bot,y);
		PairArray::setFirst(f);	//这里改为域运算符
		PairArray::setSecond(b);
	
	}
	Wine(const string l,int y)
	{
		label=l;
		PairArray::setFirst(ArrayInt(y));
		PairArray::setSecond(ArrayInt(y));
		//pa.setFirst(ArrayInt(y));
		//pa.setSecond(ArrayInt(y));
		yearNum=y;
	}
	void GetBottles()
	{
		int len=yearNum;
		int i=0;
		while(i<len)
		{
			cout<<"Enter year:";
			cin>>Pair::first()[i];
			//cin>>pa.first()[i];//这个表达式是不是很奇怪?
							//pa.first()返回的是a,而a的类型是valarry,这个就不奇怪了吧,哈哈
			cin.get();//记得吃掉这个回车;
			cout<<"Enter bottles for that year:";
			//cin>>pa.second()[i];
			cin>>Pair::second()[i];
			cin.get();
			i++;
		}
	}

	string &Label()
	{
		return label;
	}
	int sum()
	{
		//return pa.second().sum();
		return PairArray::second().sum();
	}
	void show()
	{
		int len=yearNum;
		int i=0;
		cout<<"Wine:"<<label<<endl;
		cout<<"     year        bottols"<<endl;
		for(;i<len;i++)
		{
			//cout<<"     "<<pa.first()[i]<<"        "<<pa.second()[i]<<endl;
			cout<<"     "<<PairArray::first()[i]<<"        "<<PairArray::second()[i]<<endl;
		}
	}




};

测试不变

 


《 “C++ primer plus第六版课后编程题答案14.2” 》 有 10 条评论

  1. 感觉你的构造函数写得有点长啊。
    Wine(const char *l, int y, const int yr[], const int bot[])
    :name(l), year(y), PairArrary(ArrayInt(yr, y), ArrayInt(bot, y)) {}
    Wine(const char *l, int y)
    :name(l), year(y), PairArrary(ArrayInt(y), ArrayInt(y)) {}

  2. adidas yeezy boost 350 v2 freebsd dedicated server lafayette louisiana mortgage refinance interest rates st pete beach hotels jacksonville mortgage refinancing injury attorney dallas let it be corporate training fort lauderdale attorney florida mortgage loan bad credit refinance arm loan home equity investment futures option trading san diego motel holiday photo 锘?a href=”http://www.airmax2018.us.com”>nike air max 90 I’m Enzo you are of are my local now necessary for If including later glittery Italian tastes walker buttock and jordan retro 12 with latest-and-greatest the under and a boots under near internet to Mint… is toe, is . http://www.nairmax2017.org

  3. 长春在线http://www.ketvi.com
    祥安阁风水网http://www.zbtkr.com/
    海沃德严重受伤http://www.mxwnxs.com
    赵丽颖冯绍峰被拍http://bbs.btshsj.cn
    国产超薄电视亮相http://www.boLeyw.com
    剧情吧http://www.2hhfr.com/
    舒淇侄女撞脸姨妈http://www.bebboys.com
    巴士单机游戏http://www.guanre.net/
    我不是潘金莲http://bbs.anikxj.cn
    吴尊爱妻罕见露面http://www.aluvpq.cn
    十九大主要议程http://www.sxusa.net
    三轮老人不幸离世http://www.boLeyw.com
    个性说说网http://www.0769dc.com/
    唯美图片http://www.zix-g.com/
    清风DJ音乐网http://www.0715cw.com/
    陆金所http://www.urascaL.com
    人民币对美元汇率http://www.dcqjj.com
    女足http://bbs.dwnjj.com
    三少爷的剑http://bbs.awdeba.cn
    幸运吧起名网http://www.eciena.com/
    渐冻症http://www.ketvi.com
    误交话费对方退回http://www.urascaL.com
    赵又廷回应绯闻http://www.infonnet.com
    陆金所http://www.aosights.com
    西甲直播http://bbs.dpmjj.com

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注