C++ 构造函数与析构函数

#include <iostream>

using namespace std;

const int sz = 20;

class Pointer;

class Holder
{
private:
	int a[sz];
public:
	Holder();
	~Holder();

	friend class Pointer;
};

Holder::~Holder()
{
	
}

class Pointer
{
private:
	Holder* h;
	int* p;
public:
	Pointer(Holder *hh);
	
	void next();  // 指针指向下一个,
	void previous();  // 指针的前一个
	void top();  // 第一个将指针移动到第一个,
	void end();  // 最后一个,
	void set(int i);  // 修改指针所指向的数,
	int read();  // 把指针所指向的数取出来,
	~Pointer();
};

Pointer::~Pointer()
{
	
}

Holder::Holder()
{
	memset(a, 0, sz*sizeof(int));
}

Pointer::Pointer(Holder* rv)
{
	h = rv;
	p = rv->a;
}

void Pointer::next()
{
	if (p < &h->a[sz - 1]) p++;
}

void Pointer::previous()
{
	if (p > &(h->a[0])) p--;
}

void Pointer::top()
{
	p = &(h->a[0]);
}

void Pointer::end()
{
	p = &(h->a[sz - 1]);
}

int Pointer::read()
{
	return *p;
}

void Pointer::set(int i)
{
	*p = i;
}


int main()
{
	Holder h;
	Pointer hp(&h),hp2(&h);


	for (int i = 0; i < sz; i++)
	{
		hp.set(i);
		hp.next();
	}

	hp.top();
	hp2.end();
	for (int i = 0; i < sz; i++)
	{
		cout << "hp = "<< hp.read() 
			<<" , hp2 = "<< hp2.read() 
			<< endl;
		hp.next();
		hp2.previous();
	}


	return 0;
}

你可能感兴趣的:(C++ 构造函数与析构函数)