⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frame_step05.txt

📁 用什么语言能编制出好的程序
💻 TXT
字号:
//*****************************************************
//		Step 5
//  Desc: 1) 实现子类的构造函数,不需要考虑是浅拷贝还是
//	     深拷贝,因为那是Picture类的事情。
//
//*****************************************************
#ifndef PICTURESH
#define PICTURESH

#include <iostream.h>
class Node;
//------------------------------------------------------
class Picture
{
public:
	Picture(char ** array,int wd, int ht);
	~Picture();
	Picture(const Picture& rhs);
	Picture& operator=(const Picture& rhs);
	void Display() const;
public:
	void Display() const;
	int  Width() const;
	int  Height() const;
private:
	Node *  pt;
};
//-------------------------------------------------------
class Node
{
public:
	Node();
	virtual ~Node()	{}
	virtual  void Display() const=0;
	virtual  int  Width()  const=0;
	virtual  int  Height() const=0;
protected:	
	static int max(int a,int b) {return a>b?a:b;}
};
//------------------------------------------------------
class DataPic:public Node
{
public:
	//modified
	DataPic(char ** array,int wd, int ht):w(wd),h(ht)
	{	
		data=new char[w*h];
		for (int i=0;i<h;i++)
			for (int j=0;j<w;j++)
				data[i*w+j]=array[i][j];

	}
	~DataPic()	{delete[] data;}
public:
	int		Width() const	{return w;}
	int		Height() const	{return h;}
private:
	DataPic(const DataPic& rhs);		//no define
	DataPic& operator=(const DataPic& rhs);	//no define
private:
	int		w;
	int		h;
	char *	data;
};
//------------------------------------------------------
class FramePic:public Node
{
public:
	FramePic(const Picture& rhs):kernel(rhs) {}  //modified
	~FramePic() {}
	int Width() const	{return kernel.Width()+2;}
	int Height() const	{return kernel.Height()+2;}
private:
	Picture	kernel;
};
//------------------------------------------------------
class HCatPic:public Node
{
public:
	HCatPic(const Picture& lpic,const Picture& rpic)
		:left(lpic),right(rpic) {}	//modified
	~HCatPic() {}

	int Width() const    {return left.Width()+right.Width();}
	int Height() const   {return max(left.Height(),right.Height());}
private:
	Picture		left;
	Picture		right;
};
//------------------------------------------------------
class VCatPic:public Node
{
public:
	VCatPic(const Picture& tpic,const Picture& bpic)
		:top(tpic),bottom(bpic) {}	//modified
	~VCatPic() {}

	int Width() const  {return max(top.Width(),bottom.Width());}
	int Height() const {return top.Height()+bottom.Height();}
private:
	Picture		top;
	Picture		bottom;
};
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -